11.程序如下:
#include
#include
#define uchar unsigned char //定义一下方便使用
#define uint unsigned int //定义一下方便使用
uchar num,num1;
uchar code table[]={ //数字编码0~9
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90};
void main() //主程序
{
TMOD=0x01; //定时器T0,工作方式1
TH0=(65536-50000)/256; //装载初值,中断一次50ms
TL0=(65536-50000)%256;
EA=1; //开总中断
ET0=1; //开T0中断
TR0=1; //启动定时器
while(1) //大循环
{
P2=0xaa; //数码管位选,10101010b
P0=table[num]; //段选信号
}
}
void T0_time() interrupt 1 //中断函数
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num1++;
if(num1==20) //中断20次为1秒
{num1=0;
num++; //每1秒加1
if(num==10) //数码管显示的编码0~9
ET0=0;
for(int i=0;i<10000;i++)
{
P1=0xff;
delay();
P1=0xfe;
delay();
}
num=0;
}
}
void delay()();
{
unsigned char i;
for(i=20;i>0;i--);
}
12.#include
#include
#define uchar unsigned char
#define uint unsigned int
void DelayMS(uint x)
{
uchar t;
while(x--)
{
for(t=120;t>0;t--);
}
}
void main()
{
uchar i;
P2=0x01;
while(1)
{
for(i=7;i>0;i--)
{
P2=_crol_(P2,1);
DelayMS(150);
}
for(i=7;i>0;i--)
{
P2=_cror_(P2,2);
DelayMS(150);
}
}
}
4444444444444444444444444444444444444444444444444444