欢迎来到天天文库
浏览记录
ID:15469781
大小:98.50 KB
页数:3页
时间:2018-08-03
《四位数码管对外部中断0响应计数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、·************************************************************************** ·* 标题: 四位数码管对外部中断0响应计数(C51) ·* 作者: wentao http://blog.liuwentao.net · http://wentao.programfan.com ·* 日期: 2007.3.2 ·* 软件: Keil C51 V8.02 ·* 芯片: AT89X51 ·* 说明: 实验板实测通过,
2、数码管为8位共阳 ·* 声明: 自用存档!另仅供需要的朋友参考,请勿用做不道德转载及商业用途! ·**************************************************************************/ · ·#include · ·#define uchar unsigned char · ·void delay_ms(uchar ms); // 延时毫秒@12M,ms最大值255 ·void display(); //
3、 显示子程序 · ·uchar code dis_code[10] = {0xc0,0xf9,0xa4,0xb0,0x99, //段码表 · // 0 1 2 3 4 对应内容 · 0x92,0x82,0xf8,0x80,0x90}; · // 5 6 7 8 9 · ·uchar data dis_0
4、 = 0; // 个位值 ·uchar data dis_1 = 0; // 十位值 ·uchar data dis_2 = 0; // 百位值 ·uchar data dis_3 = 0; // 千位值 · ·void main() ·{ · P2 = 0xff; // 关所有数码管 · · IT0 = 1; // 外部中断0下降沿触发 · EA = 1; // 开总中断 ·
5、 EX0 = 1; // 开外部中断0 · · while(1) · { · display(); // 调用显示子程序等待中断 · } ·} · ·void int_0() interrupt 0 // 外部中断0中断服务程序 ·{ · dis_0++; // 个位值加1 · if(dis_0 == 10)
6、 // 个位未到10则结束 · { · dis_0 = 0; // 个位到10清零 · dis_1++; // 十位值加1(个位到10的进位) · if(dis_1 == 10) // 十位未到10则结束 · { · dis_1 = 0; // 十位到10清零
7、 · dis_2++; // 百位值加1(十位到10的进位) · if(dis_2 == 10) // 百位未到10则结束 · { · dis_2 = 0; // 百位到10清零 · dis_3++; // 千位值加1(百位到10的进位) ·
8、 if(dis_3 == 10) // 千位未到10则结束 · dis_3 = 0; // 千位到10清零 · } · } · } ·} · ·v
此文档下载收益归作者所有