为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

单片机秒表程序

2017-10-17 4页 doc 16KB 18阅读

用户头像

is_447713

暂无简介

举报
单片机秒表程序单片机秒表程序 MIAO EQU 50H;定义秒值存放在50H单元 SMIAO EQU 51H;定义十位秒值存放在51H单元 GMIAO EQU 52H;定义个位秒值存放在52H单元 ORG 0000H LJMP START ORG 000BH;定时器T0中断入口地址 LJMP T0FW;跳转到T0服务程序 ORG 0030H START: MOV P2,#00H;控制所有数码管都不显示 MOV R0,#20;用R0来记录50ms中断的个数,20次50ms为1s MOV MIAO,#0;初始化秒值为0 ...
单片机秒表程序
单片机秒表程序 MIAO EQU 50H;定义秒值存放在50H单元 SMIAO EQU 51H;定义十位秒值存放在51H单元 GMIAO EQU 52H;定义个位秒值存放在52H单元 ORG 0000H LJMP START ORG 000BH;定时器T0中断入口地址 LJMP T0FW;跳转到T0服务程序 ORG 0030H START: MOV P2,#00H;控制所有数码管都不显示 MOV R0,#20;用R0来记录50ms中断的个数,20次50ms为1s MOV MIAO,#0;初始化秒值为0 MOV SMIAO,#0C0H;给十位秒值送0的显示码,在开机时显示0 MOV GMIAO,#0C0H;给个位秒值送0的显示码,在开机时显示0 MOV TMOD,#01H;设定T0工作于方式1,定时方式 MOV TH0,#3CH;设定T0定时50ms的初值 MOV TL0,#0B0H SETB EA;允许中断 SETB ET0;允许T0中断 SETB TR0;启动定时器T0 ;循环显示 LOOP: MOV P0,SMIAO;给数码管送smiao的显示码 SETB P2.0;控制第1位数码管显示smiao的值 LCALL DELAY;延时保留显示状态 CLR P2.0;消影(清除显示) MOV P0,GMIAO;给数码管送gmiao的显示码 SETB P2.1;控制第2位数码管显示gmiao的值 LCALL DELAY;延时保留显示状态 CLR P2.1;消影(清除显示) LJMP LOOP ;T0的中断服务程序 T0FW: MOV TH0,#3CH;重装定时器T0定时50ms初值 MOV TL0,#0B0H DJNZ R0,FH;判断20次50ms时间是否到,如果没有到,直接返回 MOV R0,#20;如果1s时间到,把计数值重新装入R0,为下一个1s做准备 INC MIAO;1s时间到,给秒值加1 MOV A,MIAO;判断秒值是否到60 CJNE A,#60,CALC;如果没有到60s,转移到 MOV MIAO,#0;如果到了60s,强制将秒值设为0 ;十位和个位的拆分计算程序 CALC: MOV A,MIAO;将秒值除10,商即为十位,余数即为个位 MOV B,#10 DIV AB;商在A中,余数在B中,即十位在A中,个位在B中 MOV DPTR,#TABLE;查表查出十位秒值对应在显示码 MOVC A,@A+DPTR MOV SMIAO,A MOV A,B;查表查出个位秒值对应在显示码 MOVC A,@A+DPTR MOV GMIAO,A FH: RETI ;共阳数码管的显示码 TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DELAY: MOV R7,#1 DEL3: MOV R6,#1 DEL2: MOV R5,#126 DEL1: DJNZ R5,DEL1 DJNZ R6,DEL2 DJNZ R7,DEL3 RET END #include #define uchar unsigned char #define uint unsigned int sbit led0=P1^0; void delay(uint x); void main() { while(1) { led0=0; delay(500); led0=1; delay(500); } } void delay(uint x) { uint i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); } #include #include //循环移动的头文件 #define uchar unsigned char//无符号字符型 相当于8位存储单元(Byte) 0~255 #define uint unsigned int//无符号整型 相当于16位存储单元(2Byte) 0~65535 void delay(uint x); void main() { P1 = 0xfe; while(1) { delay(500); P1=_crol_(P1,1); } } void delay(uint x) { uint i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); }
/
本文档为【单片机秒表程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索