完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
#include
typedef unsigned char u8; typedef unsigned int u16; ***it b1 = P2^2; ***it b2 = P2^3; ***it b3 = P2^4; u8 duan[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71}; u16 count = 99; u16 digit = 0; //延时函数 void delay(u16 a){ while(a--); } //数码管实现函数 void timeSub(){ u8 j; for( j=0; j<2; j++){ //只有两个数码管 switch(j){ case(0): b1 = 0, b2 = 0, b3 = 0 ,P0 = duan[count%10];break; //取得十位上的数字 case(1): b1 = 1, b2 = 0, b3 = 0, P0 = duan[count/10];break; //取得个位上的数字 } delay(100); //数码管显示相应的数字 } } void Tim0() interrupt 1 //定时器函数,选择方式一,实现定时器0中断 { TH0 = 0xfc; TL0 = 0x18; //再次赋初值 digit++; //全局变量,累加中断的次数 if(digit >= 1000){ //精准的实现定时1s digit = 0; //置0,重新开始 if(count>=0){ count--; //定时器实现1s时,数码管显示的值实现递减 } } } void main(){ TMOD |= 0x01; //门开了,定时器,方式一,16位计数 TH0 = 0xfc; TL0 = 0x18; //通过计算得到定时器的初值2^16 - 1000 ET0 = 1; //定时器0开关打开 TR0 = 1; //定时器运行开关打开 EA = 1; //打开总开关 while(1){ timeSub(); //数码管实现倒计时 } } |
|
|
|
只有小组成员才能发言,加入小组>>
2513 浏览 0 评论
1083浏览 2评论
700浏览 1评论
452浏览 0评论
193浏览 0评论
329浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 02:55 , Processed in 1.149130 second(s), Total 81, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号