秒表程序汇编语言.doc

上传人:工**** 文档编号:543138046 上传时间:2024-03-12 格式:DOC 页数:7 大小:50.50KB
返回 下载 相关 举报
秒表程序汇编语言.doc_第1页
第1页 / 共7页
秒表程序汇编语言.doc_第2页
第2页 / 共7页
秒表程序汇编语言.doc_第3页
第3页 / 共7页
秒表程序汇编语言.doc_第4页
第4页 / 共7页
秒表程序汇编语言.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

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

1、; 定义计时单元地址 HOUR EQU 30H ;存放小时变量 MIN EQU 31H ;存放分钟变量 SEC EQU 32H ;存放秒钟变量 DEDA EQU 33H ;存放10ms计数值 ; 按键端口状况值 K1_N EQU 34H ;存放按键当前端口状况值 K1_P EQU 35H ;存放按键上次端口状况值 K1_C EQU 37H ;存放按键计数单元 X EQU 36H ;LCD 地址变量 ; 按键引脚定义 K1 EQU P3.3 ;按键1引脚定义 K2 EQU P3.4 ;按键2引脚定义 ;LCD 引脚定义 RS EQU P3.5 ;LCD RS引脚定义 RW EQU P3.6 ;L

2、CD RW引脚定义 E EQU P3.7 ;LCD RS引脚定义 ORG 0000H ;程序由地址0开始执行 JMP MAIN ORG 0BH ;定时器0中断地址设置 JMP T0_INT ; 主程序 MAIN: ;开始 MOV SP,#60H ;堆栈指针指向60H CLR E ;E=0,禁止读/写LCM ACALL SET_LCD ;调LCD控制子程序 ACALL INIT ;初始化变量 MOV K1_P,#01H ;按键上次端口设置1 ACALL INIT_TIMER ;初始化定时器 ACALL MEU ;调用工作菜单子程序 LOOP:ACALL CONV ;时间计数处理 ACALL LO

3、OP1 ;调用清零键子程序 ACALL KEY ;判断是否有键按下 JZ LOOP ;无键按下转LOOP MOV K1_P,K1_N ;交换数据 ACALL KEY0 ;调用按键功能子程序 JMP LOOP ;跳LOOP处循环 ; 初始变量清零子程序 INIT: ;初始变量清零 CLR A ;A清为零 MOV K1_C,A ;K1_C 初始为0 MOV DEDA,A ;DEDA初始为0 MOV SEC,A ;SEC初始为0 MOV MIN,A ;MIN初始为0 MOV HOUR,A ;HOUR初始为0 MOV K1_N,A ;K1_N初始为0 MOV K1_P,A ;K1_P初始为0 CLR

4、TR0 ;启动中断 RET ;定时器初始化设置子程序 INIT_TIMER: ;定时器初始化 MOV TMOD,#01H ;定时器0模式1 MOV IE, #10000010B ;开通中断 RET ;中断服务程序 T0_INT: ;定时器T0中断程序 PUSH ACC ;入栈保护 INC DEDA MOV A,DEDA ;10ms 计数值加1 CJNE A,#100,TT MOV DEDA,#0 INC SEC ;秒加1 MOV A,SEC CJNE A,#60,TT INC MIN ;分加1 MOV SEC,#0 MOV A,MIN CJNE A,#60,TT INC HOUR ;时加1 M

5、OV MIN,#0 MOV A,HOUR CJNE A,#24,TT MOV DEDA,#0 MOV SEC,#0 ;秒、分、时单元清0 MOV MIN,#0 MOV HOUR,#0 TT: POP ACC ;出栈 RETI ; 中断程序返回 ;判断键是否按下子程序LOOP1: JB K2,LOOP2 ;判清零键是否按下 JMP MAIN ;跳转主程序处 LOOP2: RET ; 判断K1键是否按下 KEY: CLR A ;A清零 MOV K1_N,A ;A值送入K1_N MOV C,K1 ;K1值送入C RLC A ;同进位标志左移一位 ORL K1_N,A ;两个位作逻辑OR运算 MOV

6、A,K1_N ;K1_N值送入A XRL A,K1_P ;有键按下,A 中内容不为零 RET ;K1键第一次按功能子程序 KEY0: MOV A, K1_P ;K1_P值送入A JB ACC.0,KEY3 ;A的0位是1,转KEY3 INC K1_C ;K1_C加1 MOV A, K1_C ;K1_C值送入A CJNE A,#01H,KEY1 ;K1键是否第一次按? MOV DPTR,#MENU1 ;是,存入MENU1信息 MOV A,#1 ;设置第一行显示 CALL LCD_PRINT ;调用显示字符子程序 SETB TR0 ;启动中断 RET ;K1键第二次按功能子程序 KEY1: MOV

7、 A,K1_C ;K1_C值送入A CJNE A,#02H,KEY2 ;K1键是否第二次按? MOV DPTR,#MENU2 ;是,存入MENU2信息 MOV A,#1 ;设置第一行显示 CALL LCD_PRINT ;调用显示字符子程序 CLR TR0 ;停止中断 RET ; ;K1键第三次按功能子程序KEY2: MOV A, K1_C ;K1_C值送入A CJNE A, #03H,KEY3 ;K1键是否第三次按? MOV DPTR,#MENU3 ;是,存入MENU3信息 MOV A, #1 ;设置第一行显示 CALL LCD_PRINT ;调用显示字符子程序 SETB TR0 ;启动中断

8、RET ;K1键第四按功能子程序KEY3: MOV A,K1_C ;K1_C值送入A CJNE A,#04H,KEY4 ;K1键是否第四次按? MOV DPTR,#MENU4 ;是,存入MENU4信息 MOV A,#1 ;设置第一行显示 CALL LCD_PRINT ;调用显示字符子程序 CLR TR0 ;启动中断 KEY4: RET ;子程序返回 ; LCD显示 ; LCD控制子程序 SET_LCD: ; CLR E ACALL INIT_LCD ;初始化 LCD MOV R5,#10 ACALL DELAY MOV DPTR,#LMESS1 ;指针指到显示消息1 MOV A,#1 ;显示在第一行 ACALL LCD_PRINT ;调用显示字符子程序 MOV DPTR,#LMESS2 ;指针指到显示消息2 MOV A,#2 ;显示在第二行 ACALL LCD_PRINT ;调用显示字符子程序 RET ; LMESS1: DB 0 ;LCD 第一行显示消息 LMESS2: DB 0 ;LCD 第二行显示消息 ;LCD初始化子程序 INIT_LCD:

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

当前位置:首页 > 生活休闲 > 社会民生

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