完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
i=0; Second_Counts++; P0=DSY_CODE[Second_Counts/10]; P2=DSY_CODE[Second_Counts%10]; if(Second_Counts==100) Second_Counts=0; // 满 100 ( 10s )后显示 00 } } 33 用计数器中断实现 100 以内的按键计数 /* 名称:用计数器中断实现 100 以内的按键计数 说明:本例用 T0 计数器中断实现按键技术,由于计数寄存器初值为 1 ,因此 P3.4 引脚的每次负跳变都会触发 T0 中断,实现计数值累加。 计数器的清零用外部中断 0 控制。 34 上海师范大学信息与机电工程学院—倪继锋 */ #include #define uchar unsigned char #define uint unsigned int // 段码 uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}; uchar Count=0; // 主程序 void main() { P0=0x00; P2=0x00; TMOD=0x06; // 计数器 T0 方式 2 TH0=TL0=256-1; // 计数值为 1 ET0=1; // 允许 T0 中断 EX0=1; // 允许 INT0 中断 EA=1; // 允许 CPU 中断 IP=0x02; // 设置优先级, T0 高于 INT0 IT0=1; //INT0 中断触发方式为下降沿触发 TR0=1; // 启动 T0 while(1) { P0=DSY_CODE[Count/10]; P2=DSY_CODE[Count%10]; } } //T0 计数器中断函数 void Key_Counter() interrupt 1 { Count=(Count+1)%100; // 因为只有两位数码管,计数控制在 100 以内( 00~99 ) } //INT0 中断函数 void Clear_Counter() interrupt 0 { Count=0; } 《单片机 语言程序设计实训 例 基于 和 仿真》案例 C 100 --- 8051 PROTEUS 35 上海师范大学信息与机电工程学院—倪继锋 34 100 000s 以内的计时程序 /* 名称: 100 000s 以内的计时程序 说明:在 6 只数码管上完成 0~99 999.9s 。 */ #include #include #define uchar unsigned char #define uint unsigned int // 段码 uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//6 只数码管上显示的数字 uchar Digits_of_6DSY[]={0,0,0,0,0,0}; uchar Count; ***it Dot=P0^7; // 延时 void DelayMS(uint ms) { |
|
相关推荐
2 个讨论
|
|
求 《单片机C语言程序设计实训100例--基于8051+PROTEUS仿真 》完整版
|
|
|
|
|
|
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 17:15 , Processed in 0.662807 second(s), Total 45, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号