中断控制数码管显示程序解释

中断控制数码管显示程序解释

ID:40422795

大小:288.01 KB

页数:17页

时间:2019-08-02

中断控制数码管显示程序解释_第1页
中断控制数码管显示程序解释_第2页
中断控制数码管显示程序解释_第3页
中断控制数码管显示程序解释_第4页
中断控制数码管显示程序解释_第5页
资源描述:

《中断控制数码管显示程序解释》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、简易数码秒表设计示例程序#include51单片机寄存器定义的头文件unsignedcharcodeTab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};数码管显示0~9的断码表unsignedcharint_time;定义无符号字符变量,中断次数unsignedcharsecond;定义秒voiddelay(void)延时函数{unsignedchari;for(i=0;i<200;i++)延时时间,for循环语句

2、;}秒显示函数voidDisplay_Second(unsignedchark)定义入口参数{P2=0xfd;P2=11111101,P2.1引脚低电平,DS2亮P0=Tab[k/10];显示十位delay();调用延时函数P2=0xfe;P2=11111110,P2.0引脚低电平,DS1亮P0=Tab[k%10];显示个位delay();P2=0xff;P2=11111111,关闭所有数码管}主函数voidmain(void){TMOD=0X01;工作方式控制寄存器TMOD=00000001,

3、使用定时器T0工作方式1TH0=(65536-46083)/256;将定时时间设为50msTL0=(65536-46083)%256;存入寄存器TH0和TL0EA=1;开启总中断ET0=1;定时器T0中断允许TR0=1;启动定时器T0开始运行int_time=0;中断次数初始化second=0;秒初始化while(1)无限循环{Display_Second(second);调用秒的显示子程序}}实际计数值===46083voidTime0_serve(void)interrupt1using1定

4、时器T0的中断服务函数,T0的中断编号为1,使用第一组工作寄存器{TR0=0;关闭定时器T0int_time++;每来一次中断,中断次数自加1if(int_time==20)20次中断,即1s进行一次时间控制定时器T0的中断服务程序PSW.4(RS1)PSW.3(RS0)当前使用的工作寄存器区R0-R7000区(00-07H)011区(08-0FH)102区(10-17H)113区(18-1FH)CPU通过对PSW中的D4、D3位内容的修改,就能任选一个工作寄存器区,例如:SETBPSW.3CL

5、RPSW.4;选定第1区SETBPSW.4CLRPSW.3;选定第2区SETBPSW.3SETBPSW.4;选定第3区{int_time=0;中断次数清0second++;秒加1if(second==60)if语句second=0;等于60就返回}TH0=(65536-46083)/256;重新给计数器T0赋初值TL0=(65536-46083)/256;TR0=1;启动定时器T0}使用定时器T0的中断控制数码管倒计数显示自主思考:比较P141页倒计数示例程序与P112倒计数示例程序的区别#in

6、cludeunsignedintx;unsignedcharcodeTab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};voiddelay(void){unsignedintm;for(m=0;m<600;m++);}voiddisplay(unsignedintk){P2=0xf7;P0=Tab[k/1000];delay();P2=0xfb;P0=Tab[(k%1000)/100];delay();P2=0xf

7、d;P0=Tab[(k%100)/10];delay();P2=0xfe;P0=Tab[k%10];delay();P2=0xff;}voidmain(void){TMOD=0x01;使用定时器T0方式1TH0=(65536-46083)/256;定时50msTL0=(65536-46083)%256;EA=1;开启总中断ET0=1;定时器T0允许中断TR0=1;启动T0x=9999;while(1)无限循环{display(x);调用显示函数}}voidTime0(void)interrupt

8、1using1中断服务程序{TR0=0;关闭T0x--;每来一次中断,x自减1if(x==0){x=9999;}TH0=(65536-46083)/256;重新给定时器赋初值TL0=(65536-46083)%256;TR0=1;}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。