⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 菜单程序.asm

📁 学术交流
💻 ASM
📖 第 1 页 / 共 2 页
字号:
		  
/*-------------------------------------------
项目名:   家电中央控制系统工程
程序名:    显示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 + -