秒表程序 汇编语言

上传人:夏** 文档编号:547338390 上传时间:2024-02-16 格式:DOCX 页数:7 大小:22.80KB
返回 下载 相关 举报
秒表程序 汇编语言_第1页
第1页 / 共7页
秒表程序 汇编语言_第2页
第2页 / 共7页
秒表程序 汇编语言_第3页
第3页 / 共7页
秒表程序 汇编语言_第4页
第4页 / 共7页
秒表程序 汇编语言_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《秒表程序 汇编语言》由会员分享,可在线阅读,更多相关《秒表程序 汇编语言(7页珍藏版)》请在金锄头文库上搜索。

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

2、零;A 清为零;K1_C 初始为 0;DEDA 初始为0;SEC 初始为 0;MIN 初始为0; 定义计时单元地址 HOUR EQU 30H MIN EQU 31H SEC EQU 32H DEDA EQU 33H; 按键端口状况值 K1_N EQU 34H K1_P EQU 35H K1_C EQU 37HX EQU 36H; 按键引脚定义K1 EQU P3.3K2 EQU P3.4;LCD 引脚定义RSEQU P3.5RW EQU P3.6 EEQU P3.7ORG 0000HJMP MAINORG 0BHJMP T0_INTMAIN:MOV SP,#60HCLR EACALL SET_L

3、CDACALL INITMOV K1_P,#01HACALL INIT_TIMERACALL MEULOOP:ACALL CONVACALL LOOP1ACALL KEYJZ LOOPMOV K1_P,K1_NACALL KEY0JMP LOOP; 初始变量清零子程序INIT:CLR AMOV K1_C,AMOV DEDA,AMOV SEC,AMOV MIN,AMOVHOUR,A;HOUR 初始为0MOVK1_N,A;K1_N 初始为0MOVK1_P,A;K1_P 初始为 0CLRTR0;启动中断RET;定时器初始化设置子程序INIT_TIMER:;定时器初始化MOV TMOD,#01H;定时

4、器 0 模式 1MOV IE, #10000010B;开通中断RET;中断服务程序T0_INT:;定时器 T0 中断程序PUSHACC;入栈保护INCDEDAMOVA,DEDA;10ms 计数值加 1CJNEA,#100,TTMOVDEDA,#0INCSEC;秒加 1MOVA,SECCJNEA,#60,TTINCMIN;分加 1MOVSEC,#0MOVA,MINCJNEA,#60,TTINCHOUR;时加 1MOVMIN,#0MOVA,HOURCJNEA,#24,TTMOVDEDA,#0MOVSEC,#0;秒、分、时单元清0MOVMIN,#0MOVHOUR,#0TT: POPACC;出栈RET

5、I; 中断程序返回;判断键是否按下子程序LOOP1:;判清零键是否按下;跳转主程序处;A 清零JB K2,LOOP2 JMP MAIN LOOP2: 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_P JB ACC.0,KEY3 INC K1_C MOV A, K1_C CJNE A,#01H,KEY1 MOV

6、 DPTR,#MENU1 MOV A,#1 CALL LCD_PRINT SETB TR0RET;K1 键第二次按功能子程序 KEY1:MOV A,K1_CCJNE A,#02H,KEY2MOV DPTR,#MENU2 MOV A,#1 CALL LCD_PRINT CLR TR0RET;K1 键第三次按功能子程序KEY2:MOV A, K1_CCJNE A, #03H,KEY3 MOV DPTR,#MENU3 MOV A, #1 CALL LCD_PRINT SETB TR0RET;K1 键第四按功能子程序KEY3:MOV A,K1_C CJNE A,#04H,KEY4 MOV DPTR,#

7、MENU4;K1_P值送入A;A的0位是1,转KEY3;K1_C 加 1;K1_C值送入A;K1 键是否第一次按?;是,存入MENU1信息; 设置第一行显示;调用显示字符子程序; 启动中断;K1_C值送入A;K1 键是否第二次按?;是,存入 MENU2 信息 ; 设置第一行显示;调用显示字符子程序 ;停止中断;K1_C值送入A;K1 键是否第三次按?;是,存入 MENU3 信息 ; 设置第一行显示;调用显示字符子程序; 启动中断;K1_C值送入A;K1 键是否第四次按?;是,存入 MENU4 信息MOV A,#1CALL LCD_PRINTCLR TR0KEY4:RET;设置第一行显示;调用显

8、示字符子程序;启动中断;子程序返回 LCD 显示 ; LCD 控制子程序SET_LCD: ;CLR EACALL INIT_LCD;初始化 LCDMOV R5,#10ACALL DELAYMOV DPTR,#LMESS1 ;指针指到显示消息 1MOV A,#1;显示在第一行ACALL LCD_PRINT;调用显示字符子程序MOV DPTR,#LMESS2 ;指针指到显示消息 2MOV A,#2;显示在第二行ACALL LCD_PRINT;调用显示字符子程序RETLMESS1: DB 0 ;LCD 第一行显示消息LMESS2: DB 0 ;LCD 第二行显示消息;LCD 初始化子程序INIT_L

9、CD:MOV A,#38H ACALL WR_COMM ACALL DELAY1 MOV A,#0CH ACALL WR_COMM ACALL DELAY1 MOV A,#01H ACALL WR_COMM ACALL DELAY1 RET;写指令子程序WR_COMM: MOV P1,A CLR RS CLR RW SETB E ACALL DELAY1 CLR E;设置8位、2行、5x7点阵; 调用写指令子程序 ;调用延时子程序 ; 开显示, 光标不闪烁;调用写指令子程序 ;调用延时子程序 ;清除 LCD 显示屏;调用写指令子程序 ; ;调用延时子程序;RS=O,选择指令寄存器;RW=O,选

10、择写模式;E=1,允许读/写LCM;调用延时子程序;E=0,禁止读/写LCMRET;写数据子程序WR_DATA:MOVP1,ASETBRS;RS=1,选择数据寄存器CLRRW;RW=O,选择写模式SETBE;E=1,允许读/写LCMACALL DE;调用延时子程序CLRE;E=0,禁止读/写LCMACALL DE;调用延时子程序RET;清除该行 LCD 的字符CLR_LINE:MOV R0,#24CL1: MOVA,# ACALLWR_DATADJNZR0,CL1RET;LCD 存入工作菜单MEU:MOV DPTR,#MENU0MOV A,#1CALL LCD_PRINT;存入工作菜单;第一行

11、RET; 工作菜单MENU0:DB0MENU1:DB0MENU2:DB0MENU3:DB0MENU4:DB0;菜单显示子程序;一行、二行显示字符LCD_PRINT:CJNE A,#1,LINE2LINE1:ACALL CLR_LINE MOVA, #80HACALL WR_COMMJMP FILLLINE2:ACALL CLR_LINEMOV A,#0C0HACALL WR_COMMFILL: CLR A;判断是否为第一行;清除该行字符数据 ;设置 LCD 的第一行地址 ;写入命令;清除该行字符数据;设置 LCD 的第二行地址;填入字符MOVC A,A+DPTR CJNE A,#0,LC1 R

12、ET;写入数据LC1: ACALL WR_DATA INC DPTR JMP FILL RET;由消息区取出字符;判断是否为结束码;指针加1;继续填入字符;转换数据子程CONV:;转换为 ASCII 码并显示MOV A,HOUR;加载小时数据MOV X,#5ACALL SKOW_LINE2 INC XMOV A,#:MOV B,XACALL LCDP2MOV A,MININC XACALL SKOW_LINE2INC XMOV A,#:MOV B,XACALL LCDP2MOV A,SECINC XACALL SKOW_LINE2INC XMOV A,#:MOV B,XCALL LCDP2MO

13、V A,DEDAINC XACALL SKOW_LINE2RET;在 LCD 的第二行显示数字SKOW_LINE2:MOV B,#10DIV ABADD A,#30HPUSH BMOV B,XACALL LCDP2POP B;设置位置;显示数据;加载分钟数据;设置位置;显示数据;加载秒数数据;设置位置;显示数据;加载秒数数据;设置位置;显示数据;设置被除数;结果A存商数,B存余数;A为十位数,转换为字符;B 放入堆栈暂存;设置 LCD 显示的位置;由 LCD 显示出来; 出栈MOV A,B ADD A,#30H INC XMOV B,XACALL LCDP2RET;在 LCD 的第二行显示字符 LCDP2:PUSH ACCMOV A,BADD A,#0C0HCALL WR_COMMPOP ACCCALL WR_DATARETDEX:MOV R

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号