秒表程序 汇编语言_第1页
秒表程序 汇编语言_第2页
秒表程序 汇编语言_第3页
秒表程序 汇编语言_第4页
秒表程序 汇编语言_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、;存放小时变量;存放分钟变量;存放秒钟变量;存放10ms计数值;存放按键当前端口状况值;存放按键上次端口状况值;存放按键计数单元;LCD 地址变量;按键1引脚定义;按键2引脚定义;LCD RS引脚定义;LCD RW引脚定义;LCD RS引脚定义;程序由地址0开始执行;定时器0中断地址设置主程序;开始;堆栈指针指向60H;E=0,禁止读/写LCM;调LCD控制子程序;初始化变量;按键上次端口设置1;初始化定时器;调用工作菜单子程序;时间计数处理;调用清零键子程序;判断是否有键按下;无键按下转LOOP;交换数据;调用按键功能子程序;跳LOOP处循环;初始变量清零;A清为零;K1_C初始为0;DED

2、A初始为0;SEC初始为0;MIN初始为0;定义计时单元地址HOUR EQU 30HMINEQU 31HSECEQU 32HDEDA EQU 33H;按键端口状况值K1_N EQU 34HK1_P EQU 35HK1_C EQU 37HX EQU 36H;按键引脚定义K1 EQU P3.3K2 EQU P3.4;LCD引脚定义RSEQU P3.5RW EQU P3.6EEQU P3.7ORG 0000HJMP MAINORG 0BHJMP T0_INT;MAIN:MOV SP,#60HCLR EACALL SET_LCDACALL INITMOV K1_P,#01HACALL INIT_TIM

3、ERACALL MEULOOP:ACALL CONVACALL LOOP1ACALL KEYJZ LOOPMOV K1_P,K1_NACALL KEY0JMP LOOP;初始变量清零子程序INIT:CLR AMOV K1_C,AMOV DEDA,AMOV SEC,AMOV MIN,AMOV HOUR,A;HOUR初始为0MOV K1_N,A;K1_N初始为0MOV K1_P,A;K1_P初始为0CLR TR0RET;定时器初始化设置子程序;启动中断INIT_TIMER:;定时器初始化MOV TMOD,#01H;定时器0模式1MOV IE, #10000010BRET;中断服务程序;开通中断T0

4、_INT:;定时器T0中断程序PUSH ACCINC DEDA;入栈保护MOV A,DEDACJNE A,#100,TTMOV DEDA,#0;10ms计数值加1INC SECMOV A,SECCJNE A,#60,TT;秒加1INC MINMOV SEC,#0MOV A,MINCJNE A,#60,TT;分加1INC HOURMOV MIN,#0MOV A,HOURCJNE A,#24,TTMOV DEDA,#0;时加1MOV SEC,#0MOV MIN,#0MOV HOUR,#0;秒、分、时单元清0TT: POP ACC;出栈RETI;中断程序返回;判断键是否按下子程序LOOP1:;判清零

5、键是否按下;;判清零键是否按下;跳转主程序处;A清零JMP MAINLOOP2: RET;判断K1键是否按下KEY:CLR AMOVK1_N,A;A值送入K1_NMOVC,K1;K1值送入CRLCA;同进位标志左移一位ORLK1_N,A;两个位作逻辑OR运算MOVA,K1_N;K1_N值送入AXRLA,K1_P;有键按下,A中内容不为零RET;K1键第一次按功能子程序KEY0:MOV A, K1_PJB ACC.0,KEY3INC K1_CMOV A, K1_CCJNE A,#01H,KEY1MOV DPTR,#MENU1MOV A,#1CALL LCD_PRINTSETB TR0RET;K1

6、键第二次按功能子程序KEY1:MOV A,K1_CCJNE A,#02H,KEY2MOV DPTR,#MENU2MOV A,#1CALL LCD_PRINTCLR TR0RET;K1键第三次按功能子程序KEY2:MOV A, K1_CCJNE A, #03H,KEY3MOV DPTR,#MENU3MOV A, #1CALL LCD_PRINTSETB TR0RET;K1键第四按功能子程序KEY3:MOV A,K1_CCJNE A,#04H,KEY4MOV DPTR,#MENU4;K1_P值送入A;A的0位是1,转KEY3;K1_C 加 1;K1_C值送入A;K1键是否第一次按?;是,存入MEN

7、U1信息;设置第一行显示;调用显示字符子程序;启动中断;K1_C值送入A;K1键是否第二次按?;是,存入MENU2信息;设置第一行显示;调用显示字符子程序;停止中断;K1_C值送入A;K1键是否第三次按?;是,存入MENU3信息;设置第一行显示;调用显示字符子程序;启动中断;K1_C值送入A;K1键是否第四次按?;是,存入MENU4信息MOV A,#1CALL LCD_PRINTCLR TR0KEY4:RET;设置第一行显示;调用显示字符子程序;启动中断;子程序返回LCD显示;LCD控制子程序SET_LCD:;CLR EACALL INIT_LCD;初始化 LCDMOV R5,#10ACALL

8、 DELAYMOV DPTR,#LMESS1 ;指针指到显示消息1MOV A,#1;显示在第一行ACALL LCD_PRINT;调用显示字符子程序MOV DPTR,#LMESS2 ;指针指到显示消息2MOV A,#2;显示在第二行ACALL LCD_PRINT;调用显示字符子程序RET;LMESS1: DB 0 ;LCD 第一行显示消息LMESS2: DB 0 ;LCD第二行显示消息;LCD初始化子程序INIT_LCD:MOV A,#38HACALL WR_COMMACALL DELAY1MOV A,#0CHACALL WR_COMMACALL DELAY1MOV A,#01HACALL WR

9、_COMMACALL DELAY1RET;写指令子程序WR_COMM:MOV P1,ACLR RSCLR RWSETB EACALL DELAY1CLR E;设置8位、2行、5x7点阵; 调用写指令子程序;调用延时子程序;开显示,光标不闪烁;调用写指令子程序;调用延时子程序;清除LCD显示屏;调用写指令子程序 ;调用延时子程序;RS=0,选择指令寄存器;RW=0,选择写模式;E=1,允许读/写LCM;调用延时子程序;E=0,禁止读/写LCM;写数据子程序WR_DATA:MOV P1,ASETB RS;RS=1,选择数据寄存器CLR RW;RW=0,选择写模式SETB E;E=1,允许读/写LC

10、MACALL DE;调用延时子程序CLR E;E=0,禁止读/写LCMACALL DE;调用延时子程序RET;清除该行LCD的字符CLR_LINE:MOVR0,#24CL1: MOV A,#ACALL WR_DATADJNZ R0,CL1RET;LCD存入工作菜单RET;存入工作菜单;第一行MEU:MEU:MOV DPTR,#MENU0MOV A,#1CALL LCD PRINTRET; 工作菜单MENU0:DB0MENU1:DB0MENU2:DB0MENU3:DB0MENU4:DB0;菜单显示子程序;一行、二行显示字符LCD_PRINT:CJNE A,#1,LINE2 LINE1:ACALL

11、 CLR_LINEMOV A, #80HACALL WR_COMMJMP FILLLINE2:ACALL CLR_LINEMOV A,#0C0HACALL WR_COMM FILL: CLR A;判断是否为第一行;清除该行字符数据;设置LCD的第一行地址;写入命令;清除该行字符数据;设置LCD的第二行地址;填入字符MOVC A,A+DPTR;由消息区取出字符CJNE A,#0,LC1;判断是否为结束码RET;写入数据LC1: ACALL WR_DATAINC DPTR;指针加1JMP FILL;继续填入字符RET;转换数据子程CONV:;转换为ASCII码并显示MOV A,HOUR;加载小时数

12、据MOV X,#5;设置位置ACALL SKOW_LINE2;显示数据INC X;MOV A,#:;MOV B,X;ACALL LCDP2;MOV A,MIN;加载分钟数据INC X;设置位置ACALL SKOW_LINE2;显示数据INC X;MOV A,#:;MOV B,X;ACALL LCDP2;MOV A,SEC;加载秒数数据INC X;设置位置ACALL SKOW_LINE2;显示数据INC X;MOV A,#:;MOV B,X;CALL LCDP2;MOV A,DEDA;加载秒数数据INC X;设置位置ACALL SKOW_LINE2;显示数据RET;在LCD的第一行显示数字SKO

13、W_LINE2:MOV B,#10;设置被除数DIV AB;结果A存商数,B存余数ADD A,#30H;A为十位数,转换为字符PUSH B;B放入堆栈暂存MOV B,X;设置LCD显示的位置ACALL LCDP2;由LCD显示出来POP B;出栈MOV A,BADD A,#30HINC XMOV B,XACALL LCDP2RET;在LCD的第二行显示字符LCDP2:PUSH ACCMOV A,BADD A,#0C0HCALL WR_COMMPOP ACCCALL WR_DATARETDEX:MOV R7,#180DE1:NOPDJNZ R7,DE1RET;延时10MSDELAY:MOV R6,#50D1:MOV R7,#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论