|
例3 00-59秒计时器的proteus仿真电路及C语言程序设计
- #include <REG51.H>
- #define uint unsigned int
- #define uchar unsigned char
- uint sec;
-
-
- uint tcnt;
- unsigned char table[]=
- {0xc0,0xf9,0xa4,0xb0,0x99,
- 0x92,0x82,0xf8,0x80,0x90,
- 0xbf};
- //共阴数码管 0-9 '-'
-
- //显示延时 函数
- void delay(unsigned int z)
- {
- unsigned int x;
- unsigned char y;
- for(x=z;x>0;x--)
- for(y=200;y>0;y--);
- }
- void display()
- {
-
- P3=0xfd;P2=0x00;
- P2=table[sec%10];
- delay(3);
-
- P3=0xfe;P2=0x00;
- P2=table[sec/10];
- delay(3);
-
- }
- main()
- {
-
- TMOD=0x02; //设置模式为定时器T0的模式2 (8位自动重装计数初值的计数值)
- TH0=0x06; //设置计数器初值,靠TH0存储重装的计数值X0=256-250=6
- TL0=0x06;
- TR0=1; //启动T0
- ET0=1; //开启定时器T0中断允许
- EA=1;
-
- while(1)
- {
-
- display();
-
- }
- }
- void t0(void)interrupt 1 using 0 //t0的中断程序
- {
- tcnt++;
- if(tcnt==4000)//定时器的定时计数,4000次250us为1秒
- {
- tcnt=0;
-
- sec++;
- if(sec==60)
- {
- sec=0;
-
- }
- }
- }
复制代码
所有资料下载:
例3 00-59秒计时器的proteus仿真电路及C语言程序设计.zip
(47.7 KB, 下载次数: 43)
|
|