//设CPU是时钟12MHz的8051系列
data unsigned char ms
sbit K1=P0^0
void SetupTimer0()
{
TMOD &= 0XF0 //仅保留T1信息
TMOD |= 0X02 //设置T0: 定时功能,方式2,自动重载8位定时器/计数器
TH0 = 256-250//定时每0.25ms中断一次
TL0 = 256-250
TR0 = 1 //开启定时器
ET0 = 1 //定时器0中断打开
}
void Timer0_ISR() interrupt 1 //中断服务程序
{
static data unsigned char us250
if (++us250>=4) {++ms us250=0}
}
void main()
{
data unsigned char p1,p2
ms=0
SetupTimer0()
EA = 1 //全局中断打开
K1 = 1
while(1)
{
if (K1) {P1=p1=0XFF P2=p2=0x00 ms=0 continue}
if (ms<150) continue
ms=0
p1<<=1 P1=p1
p2<<=1 p2|=1 P2=p2
}
}
你是想在控制台输出么?如果是MFC很容易实现,直接设置text内容,如果是控制台,可以调用system("cls")进行清屏操作也能实现这个效果的,可以放到一个循环里面,你说的过一会显示,那只要调用sleep("1")就行了,中间数字自己写时间,最前面要加个#include <windows.h>头文件可以试试使用gdi+库来实现颜色渐变,下边是一种方法,具体可见: http://download.csdn.net/download/weizengke/3101800有源码,。BOOL CTipDlg::OnEraseBkgnd(CDC* pDC)
{
CRect rcClient
GetClientRect(&rcClient)
GradientFillRect( pDC, rcClient, RGB(0,191,255), RGB(238,238,238), TRUE )
// CPaintDC dc(this)
// Rect picRect
// CRect clRect
// GetClientRect(&clRect)
// //GetUpdateRect(clRect)
// picRect.X = clRect.left
// picRect.Y = clRect.top
// picRect.Width = clRect.Width()
// picRect.Height = clRect.Height()
//
// Graphics grpx(dc)
// //////////////////////////////////////////////////////////////////主界面背景
// WCHAR *strPath=L"res\\none.png"
// Image * Img = Image::FromFile(strPath,FALSE)
// grpx.DrawImage(Img,picRect)
return true
// return CDialog::OnEraseBkgnd(pDC)
}
//实现渐变
void CTipDlg::GradientFillRect( CDC *pDC, CRect &rect, COLORREF col_from, COLORREF col_to, bool vert_grad )
{
TRIVERTEXvert[2]
GRADIENT_RECTmesh
vert[0].x = rect.left
vert[0].y = rect.top
vert[0].Alpha = 0x0000
vert[0].Blue = GetBValue(col_from) <<8
vert[0].Green = GetGValue(col_from) <<8
vert[0].Red= GetRValue(col_from) <<8
vert[1].x = rect.right
vert[1].y = rect.bottom
vert[1].Alpha = 0x0000
vert[1].Blue = GetBValue(col_to) <<8
vert[1].Green = GetGValue(col_to) <<8
vert[1].Red= GetRValue(col_to) <<8
vert[2].x = rect.right
vert[2].y = rect.bottom
vert[2].Alpha = 0x0000
vert[2].Blue = GetBValue(col_to) <<16
vert[2].Green = GetGValue(col_to) <<16
vert[2].Red= GetRValue(col_to) <<16
mesh.UpperLeft = 0
mesh.LowerRight = 1
#if _MSC_VER >= 1300 // only VS7 and above has GradientFill as a pDC member
pDC->GradientFill( vert, 2, &mesh, 1, vert_grad ? GRADIENT_FILL_RECT_V :
GRADIENT_FILL_RECT_H )
#else
GradientFill( pDC->m_hDC, vert, 2, &mesh, 1, vert_grad ? GRADIENT_FILL_RECT_V :
GRADIENT_FILL_RECT_H )
#endif
}