?? 菜單程序.asm
字號:
/*-------------------------------------------
項目名: 家電中央控制系統工程
程序名: 顯示MCU總體程序
編寫人: 杜洋
初寫時間: 2005年9月5日晚20時
程序功能: 實現液晶、語音部分的人機對話和總線的通信
實現方法: 用中斷實現總線接收
CPU說明: 89S52 12MHZ晶振
接口說明: (詳見 初定義)
信息說明:
修改日志:
NO.1-
-------------------------------------------*/
;----------------------------------------初定義
LCDDAT EQU P2
RS EQU P3.5
RW EQU P3.6
E EQU P3.7
REDLED EQU P3.4
BACKLED EQU P3.1
PLAY EQU P1.7
STOPIN EQU P3.0
LIN EQU P3.2
SPDAT EQU P1
XX2 EQU P0.0
LT_RAM EQU 30H
LR_RAM EQU 40H
SP_RAM EQU 20H
DIS1_RAM EQU 50H
DIS2_RAM EQU 70H
DIS3_RAM EQU 60H
DIS4_RAM EQU 80H
RR1 EQU 26H
RR3 EQU 21H
RR4 EQU 22H
T0_RAM EQU 23H
QR3_RAM EQU 24H
QR2_RAM EQU 25H
LCDDISPLAY EQU 26H ;菜單顯示移位寄存器
MENU_RAM EQU 27H ;菜單位置寄存器
ONOFFLCD EQU 28H
;-------------------------------------程序入口
ORG 0000H
JMP LCD_START
ORG 0003H
JMP LIN_INT0
ORG 000BH
JMP LED_T0
ORG 0030H
;--------------------------------------主程序開始
LCD_START:
SETB PLAY
MOV T0_RAM,#250
MOV TMOD,#01H
SETB ET0
MOV TL0,#0B0H ;50MS定時初值(T0計時用)
MOV TH0,#3CH ;50MS定時初值
CLR IT0
SETB EX0
SETB TR0
SETB EA
MOV DPTR,#TAB_0
CALL START_LCD
;-----自檢程序
CALL DL1S
MOV MENU_RAM,#00H
MOV DPTR,#TAB_H
CALL START_LCD
CLR LCDDISPLAY
;--------------------------------------主循環體程序
LCD_LOOP:
JB ONOFFLCD,DISPLAY_PRO
LCD_LOOP_1:
JMP LCD_LOOP
;---------------------------- 菜單顯示處理
DISPLAY_PRO:
MOV A,MENU_RAM
MOV DPTR,#MENUTAB_HOST
RLC A
JMP @A+DPTR
MENUNEXT:
CALL START_LCD
CLR LCDDISPLAY
CLR ONOFFLCD
JMP LCD_LOOP
;-------------------------
MENUTAB_HOST:
JMP HOST_H;0 ;主菜單
JMP HOST_1 ; 1,控制
JMP HOST_2 ; 2,設置
JMP HOST_3 ; 3,智能
JMP HOST_4 ; 4,幫助
MENUTAB_1:
JMP HOST_11 ;
JMP HOST_12 ;
JMP HOST_13 ;
;;;;;;;;;;;;;;;;;;;;;;
MENUTAB_2:
JMP HOST_21 ;
JMP HOST_22 ;
JMP HOST_23 ;
MENUTAB_3:
JMP HOST_31 ;
JMP HOST_32 ;
JMP HOST_33 ;
MENUTAB_4:
JMP HOST_41 ;
JMP HOST_42 ;
JMP HOST_43 ;
JMP HOST_11B ;17
JMP HOST_11C
JMP HOST_11D
;-------------------------------菜單項主流程
HOST_H: ;主菜單的適用鍵
MOV A,LCDDISPLAY
CJNE A,#01H,HH_H1
MOV DPTR,#TAB_1
MOV MENU_RAM,#01H
JMP MENUNEXT
HH_H1:
CJNE A,#02H,HH_H2
MOV DPTR,#TAB_2
MOV MENU_RAM,#02H
JMP MENUNEXT
HH_H2:
CJNE A,#03H,HH_H3
MOV DPTR,#TAB_3
MOV MENU_RAM,#03H
JMP MENUNEXT
HH_H3:
CJNE A,#04H,HH_H4
MOV DPTR,#TAB_4
MOV MENU_RAM,#04H
JMP MENUNEXT
HH_H4:
CLR LCDDISPLAY
CLR ONOFFLCD
JMP LCD_LOOP
;----------------------------------------------第一層菜單
HOST_1:;==================================== ;《《《控制》》》
MOV A,LCDDISPLAY ;回到主菜單
CJNE A,#0DH,HH_10
MOV DPTR,#TAB_H
MOV MENU_RAM,#00H
JMP MENUNEXT
HH_10:
CJNE A,#01H,HH_11
MOV DPTR,#TAB_11
MOV MENU_RAM,#05H
JMP MENUNEXT
HH_11:
CJNE A,#02H,HH_12
MOV DPTR,#TAB_12
MOV MENU_RAM,#06H
JMP MENUNEXT
HH_12:
CJNE A,#03H,HH_13
MOV DPTR,#TAB_13
MOV MENU_RAM,#07H
JMP MENUNEXT
HH_13:
CLR LCDDISPLAY
CLR ONOFFLCD
JMP LCD_LOOP
HOST_2:;================================= ;《《《設置》》》
MOV A,LCDDISPLAY ;回到主菜單
CJNE A,#0DH,HH_20
MOV DPTR,#TAB_H
MOV MENU_RAM,#00H
JMP MENUNEXT
HH_20:
MOV A,LCDDISPLAY
CJNE A,#01H,HH_21
MOV DPTR,#TAB_21
MOV MENU_RAM,#09H
JMP MENUNEXT
HH_21:
CJNE A,#02H,HH_22
MOV DPTR,#TAB_22
MOV MENU_RAM,#0AH
JMP MENUNEXT
HH_22:
CJNE A,#03H,HH_23
MOV DPTR,#TAB_23
MOV MENU_RAM,#0BH
JMP MENUNEXT
HH_23:
CLR LCDDISPLAY
CLR ONOFFLCD
JMP LCD_LOOP
HOST_3:;============================================= ;《《《智能》》》
MOV A,LCDDISPLAY ;回到主菜單
CJNE A,#0DH,HH_30
MOV DPTR,#TAB_H
MOV MENU_RAM,#00H
JMP MENUNEXT
HH_30:
MOV A,LCDDISPLAY
CJNE A,#01H,HH_31
MOV DPTR,#TAB_31
MOV MENU_RAM,#0CH
JMP MENUNEXT
HH_31:
CJNE A,#02H,HH_32
MOV DPTR,#TAB_32
MOV MENU_RAM,#0DH
JMP MENUNEXT
HH_32:
CJNE A,#03H,HH_33
MOV DPTR,#TAB_33
MOV MENU_RAM,#0EH
JMP MENUNEXT
HH_33:
CLR LCDDISPLAY
CLR ONOFFLCD
JMP LCD_LOOP
HOST_4:;============================================= ;《《《幫助》》》
MOV A,LCDDISPLAY ;回到主菜單
CJNE A,#0DH,HH_40
MOV DPTR,#TAB_H
MOV MENU_RAM,#00H
JMP MENUNEXT
HH_40:
MOV A,LCDDISPLAY
CJNE A,#01H,HH_41
MOV DPTR,#TAB_41
MOV MENU_RAM,#0FH
JMP MENUNEXT
HH_41:
CJNE A,#02H,HH_42
MOV DPTR,#TAB_42
MOV MENU_RAM,#10H
JMP MENUNEXT
HH_42:
CJNE A,#03H,HH_43
MOV DPTR,#TAB_43
MOV MENU_RAM,#11H
JMP MENUNEXT
HH_43:
CLR LCDDISPLAY
CLR ONOFFLCD
JMP LCD_LOOP
;----------------------------------------第二層菜單
HOST_11:
MOV A,LCDDISPLAY ;回到上一層菜單
CJNE A,#0DH,HH_110
MOV DPTR,#TAB_1
MOV MENU_RAM,#01H
JMP MENUNEXT
HH_110:
;下一頁
CJNE A,#0FH,HH_111
MOV DPTR,#TAB_11B
MOV MENU_RAM,#11H
JMP MENUNEXT
HH_111:
CLR LCDDISPLAY
CLR ONOFFLCD
JMP LCD_LOOP
;==================================== 附加1~12從機控制項
HOST_11B:
MOV A,LCDDISPLAY ;回到上一層菜單
CJNE A,#0DH,HH_11B1
MOV DPTR,#TAB_1
MOV MENU_RAM,#01
JMP MENUNEXT
HH_11B1:
;下一頁
CJNE A,#0FH,HH_11B2
MOV DPTR,#TAB_11C
MOV MENU_RAM,#12H
JMP MENUNEXT
HH_11B2:
;上一頁
CJNE A,#0BH,HH_11B3
MOV DPTR,#TAB_11
MOV MENU_RAM,#05
JMP MENUNEXT
HH_11B3:
CLR LCDDISPLAY
CLR ONOFFLCD
JMP LCD_LOOP
;======================================
HOST_11C:
MOV A,LCDDISPLAY ;回到上一層菜單
CJNE A,#0DH,HH_11C1
MOV DPTR,#TAB_1
MOV MENU_RAM,#01H
JMP MENUNEXT
HH_11C1:
;下一頁
CJNE A,#0FH,HH_11C2
MOV DPTR,#TAB_11D
MOV MENU_RAM,#13H
JMP MENUNEXT
HH_11C2:
;上一頁
CJNE A,#0BH,HH_11C3
MOV DPTR,#TAB_11B
MOV MENU_RAM,#11H
JMP MENUNEXT
HH_11C3:
CLR LCDDISPLAY
CLR ONOFFLCD
JMP LCD_LOOP
;===========================
HOST_11D:
MOV A,LCDDISPLAY ;回到上一層菜單
CJNE A,#0DH,HH_11D1
MOV DPTR,#TAB_1
MOV MENU_RAM,#01H
JMP MENUNEXT
HH_11D1:
;上一頁
CJNE A,#0BH,HH_11D3
MOV DPTR,#TAB_11C
MOV MENU_RAM,#12H
JMP MENUNEXT
HH_11D3:
CLR LCDDISPLAY
CLR ONOFFLCD
JMP LCD_LOOP
;=============================================控制全部從機
HOST_12:
MOV A,LCDDISPLAY ;回到上一層菜單
CJNE A,#0DH,HH_12A
MOV DPTR,#TAB_1
MOV MENU_RAM,#01H
JMP MENUNEXT
HH_12A:
MOV A,LCDDISPLAY
CJNE A,#01H,HH_12B
MOV DPTR,#TAB_ON
;*****************************************
MOV MENU_RAM,#06H
JMP MENUNEXT
HH_12B:
CJNE A,#02H,HH_12C
MOV DPTR,#TAB_OFF
;*****************************************
MOV MENU_RAM,#06H
JMP MENUNEXT
HH_12C:
CLR LCDDISPLAY
CLR ONOFFLCD
JMP LCD_LOOP
;--------------------------
HOST_13:
MOV A,LCDDISPLAY ;回到上一層菜單
CJNE A,#0DH,HH_13A
MOV DPTR,#TAB_1
MOV MENU_RAM,#01H
JMP MENUNEXT
HH_13A:
MOV A,LCDDISPLAY
CJNE A,#0CH,HH_13B
MOV DPTR,#TAB_NEW
;*****************************************
MOV MENU_RAM,#07H
JMP MENUNEXT
HH_13B:
CJNE A,#0EH,HH_13C
MOV DPTR,#TAB_OUT
;*****************************************
MOV MENU_RAM,#07H
JMP MENUNEXT
HH_13C:
CLR LCDDISPLAY
CLR ONOFFLCD
JMP LCD_LOOP
;======================================設置部分操作
HOST_21:
MOV A,LCDDISPLAY ;回到上一層菜單
CJNE A,#0DH,HH_
MOV DPTR,#TAB_2
MOV MENU_RAM,#02H
JMP MENUNEXT
;======================================
HOST_22:
MOV A,LCDDISPLAY ;回到上一層菜單
CJNE A,#0DH,HH_
MOV DPTR,#TAB_2
MOV MENU_RAM,#02H
JMP MENUNEXT
HOST_23:
MOV A,LCDDISPLAY ;回到上一層菜單
CJNE A,#0DH,HH_
MOV DPTR,#TAB_2
MOV MENU_RAM,#02H
JMP MENUNEXT
HOST_31:
MOV A,LCDDISPLAY ;回到上一層菜單
CJNE A,#0DH,HH_
MOV DPTR,#TAB_3
MOV MENU_RAM,#03H
JMP MENUNEXT
HOST_32:
MOV A,LCDDISPLAY ;回到上一層菜單
CJNE A,#0DH,HH_
MOV DPTR,#TAB_3
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -