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

📄 lcd89527.asm

📁 餐饮呼叫系统的汇编源代码
💻 ASM
📖 第 1 页 / 共 5 页
字号:

MAIN4_251:
       CJNE A,#10,MAIN4_26
MAIN4_26:
       JC MAIN4_27
       NOP
       NOP
       LJMP MAIN5                       ;如果是不为C、0--9的其他数,不于处理
MAIN4_27:

       MOV R0,#KEY_AERA+2                 ;第3个数字的存储
       MOV @R0,KEY_NO

       MOV X_ADD,#6                             ;显示第3个数据
       MOV Y_ADD,#88
       LCALL KEY_COMPARE
       LCALL OUTSHUZI


       MOV X_ADD,#6                             ;显示第4光标
       MOV Y_ADD,#96
       MOV DPTR,#ZIMU_GUANGBIAO
       LCALL OUTSHUZI


       INC KEY_GESHU
       LJMP MAIN5
;*******输入的第4个数据的处理*************
THREE_KEYS:
        CJNE A,#03,MAIN4_40              ;
        MOV A,KEY_NO
        CJNE A,#0CH,MAIN4_39

       MOV X_ADD,#6                             ;显示第3光标
       MOV Y_ADD,#88
       MOV DPTR,#ZIMU_GUANGBIAO
       LCALL OUTSHUZI

       MOV X_ADD,#6                             ;清除第4光标
       MOV Y_ADD,#96
       MOV DPTR,#BLANK8
       LCALL OUTSHUZI


       DEC KEY_GESHU
       LJMP MAIN5

MAIN4_39:
        CJNE A,#010,MAIN4_3A
MAIN4_3A:
        JNC MAIN4_3B                              ;0--9

       MOV R0,#KEY_AERA+3                 ;第4个数字的存储
       MOV @R0,KEY_NO

       MOV X_ADD,#6                             ;显示第4个数据
       MOV Y_ADD,#96
       LCALL KEY_COMPARE
       LCALL OUTSHUZI

       INC KEY_GESHU
       LJMP MAIN5

MAIN4_3B:
       CJNE A,#0FH,MAIN4_3C
       MOV R0,#KEY_AERA+2
       MOV A,@R0
       MOV @R0,#0
       INC R0
       MOV @R0,A
       NOP
       NOP
       LJMP MAIN4_4OK

MAIN4_3C:
       NOP                              ;其他的按键不处理
       LJMP MAIN5

;*****************************************************
MAIN4_40:                                       ;等待的是第5个数据是F或C
       MOV A,KEY_NO
       CJNE A,#0CH,MAIN4_41
       MOV X_ADD,#6                             ;清除第4个数据
       MOV Y_ADD,#96
       MOV DPTR,#ZIMU_GUANGBIAO
       LCALL OUTSHUZI

       DEC KEY_GESHU
       LJMP MAIN5
;****************

MAIN4_41:
       CJNE A,#0FH,MAIN4_42
MAIN4_4OK:                                      ;确定之后,查表出对应CALL机号码,然后整理信息
       NOP

      CLR F_DIS_CALL_2
      MOV KEY_GESHU,#0
       MOV R0,#KEY_AERA                  ;收到两个数据就合并
       MOV A,@R0
       SWAP A
       INC R0
       ORL A,@R0
       LCALL BCDH_1BYTE
       DEC R0
       MOV @R0,A                        ;暂时存放的地点
       MOV R0,#KEY_AERA+2                  ;收到两个数据就合并
       MOV A,@R0
       SWAP A
       INC R0
       ORL A,@R0
       LCALL BCDH_1BYTE
       DEC R0
       DEC R0
       MOV @R0,A


        MOV R0,#OUT_BUFF
        MOV @R0,#0              ;暂时的地址时0000,正式的应该是查表之后得到的4位地址
        INC R0
        MOV @R0,#0
        INC R0
        MOV @R0,#0
        INC R0
        MOV @R0,#0
        INC R0
       MOV R1,#KEY_AERA+1
       MOV A,@R1
       MOV @R0,A



       AJMP MAIN4_43


MAIN4_42:
        NOP
        NOP
        LJMP MAIN5

MAIN4_43:
       LCALL CLRLCD
       LCALL DIS_CALL_END               ;显示呼叫完成的画面

;整理完数据区后,启动发送

DATA_OUT:                               ;这里启动串口数据发送
      SETB RS0
      SETB RS1

      CLR F_SEND_END
      MOV R3,#5                         ;发送的数据的个数
      MOV R0,#OUT_BUFF
      MOV A,@R0
      MOV SBUF,A
      NOP
;DATA_OUT_1:
;      NOP
;      NOP
;      JNB F_SEND,DATA_OUT_1

        CLR RS0
        CLR RS1

CALL_OUT:                               ;恢复显示画面
       LCALL DELAY_S
       LCALL DELAY_S
       LCALL DELAY_S
       NOP
       SETB F_REFRESH
       SETB F_MOVED
       CLR F_DIS_CALL
MAIN5:
      NOP
      NOP
      LJMP MAIN
;**************************************************
DIS_CALL:

        MOV X_ADD,#0
        MOV Y_ADD,#32
        MOV DPTR,#HZ_QING_3             ;请
        LCALL OUTHZ16

        MOV X_ADD,#0
        MOV Y_ADD,#048
        MOV DPTR,#HZ_SHU_1             ;输
        LCALL OUTHZ16

        MOV X_ADD,#0
        MOV Y_ADD,#064
        MOV DPTR,#HZ_RU_4               ;入
        LCALL OUTHZ16


        MOV X_ADD,#3
        MOV Y_ADD,#00
        MOV DPTR,#HZ_FU_2             ;服
        LCALL OUTHZ16

        MOV X_ADD,#3
        MOV Y_ADD,#16
        MOV DPTR,#HZ_WU_4             ;务
        LCALL OUTHZ16


        MOV X_ADD,#3
        MOV Y_ADD,#032
        MOV DPTR,#HZ_YUAN_2_1             ;员
        LCALL OUTHZ16

        MOV X_ADD,#3
        MOV Y_ADD,#48
        MOV DPTR,#HZ_HAO_4             ;号
        LCALL OUTHZ16


        MOV X_ADD,#3
        MOV Y_ADD,#064
        MOV DPTR,#HZ_MA_3             ;码
        LCALL OUTHZ16



        MOV X_ADD,#3
        MOV Y_ADD,#80
        MOV DPTR,#ZIMU_MAOHAO           ;:
        LCALL OUTSHUZI


        MOV X_ADD,#6
        MOV Y_ADD,#0
        MOV DPTR,#HZ_XU_1             ;需
        LCALL OUTHZ16

        MOV X_ADD,#6
        MOV Y_ADD,#016
        MOV DPTR,#HZ_FU_2             ;服
        LCALL OUTHZ16

        MOV X_ADD,#6
        MOV Y_ADD,#32
        MOV DPTR,#HZ_WU_4             ;务
        LCALL OUTHZ16


        MOV X_ADD,#6
        MOV Y_ADD,#48
        MOV DPTR,#HZ_TAI_2             ;台
        LCALL OUTHZ16



        MOV X_ADD,#6
        MOV Y_ADD,#64
        MOV DPTR,#HZ_HAO_4             ;号
        LCALL OUTHZ16

        MOV X_ADD,#6
        MOV Y_ADD,#80
        MOV DPTR,#ZIMU_MAOHAO           ;:
        LCALL OUTSHUZI


       MOV X_ADD,#3                             ;显示第一个光标
       MOV Y_ADD,#88
       MOV DPTR,#ZIMU_GUANGBIAO
       LCALL OUTSHUZI



        RET

;*******************************************************
DIS_CALL_END:


        MOV X_ADD,#3
        MOV Y_ADD,#032
        MOV DPTR,#HZ_HU_1             ;呼
        LCALL OUTHZ16

        MOV X_ADD,#3
        MOV Y_ADD,#48
        MOV DPTR,#HZ_JIAO_4             ;叫
        LCALL OUTHZ16


        MOV X_ADD,#3
        MOV Y_ADD,#064
        MOV DPTR,#HZ_WAN_2             ;号
        LCALL OUTHZ16

        MOV X_ADD,#3
        MOV Y_ADD,#80
        MOV DPTR,#HZ_CHENG_2             ;码
        LCALL OUTHZ16


        MOV X_ADD,#3                    ;
        MOV Y_ADD,#96
        MOV DPTR,#ZIMU_TANHAO           ;!
        LCALL OUTSHUZI
        RET

;********************************************************
;                        串行中断
;通过串口,发送接收到的数据到电脑
;********************************************************
S_INT:
		PUSH A
		PUSH PSW
      SETB RS0
      SETB RS1

		JB RI,RECEIVE_INS	       ;首先判断是出还是入
                CLR TI

                NOP
                NOP
                JB F_SEND_END,TO_INTS_RETI

		INC R0
		MOV A,@R0
		MOV SBUF,A

		NOP
		NOP
                DJNZ R3,INTS_RETI
                SETB F_SEND_END                ;结束标志

TO_INTS_RETI:   NOP                                ;最后一个数据发送完,走这里.放弃控制发送区
                NOP
                LJMP INTS_RETI

RECEIVE_INS:
		CLR RI
		MOV A,PAIDUI
                ADD A,#GET_BUFF
		MOV R0,A
                MOV A,SBUF
                ;LCALL HBCD
                MOV @R0,A

                MOV R1,#OUT_BUFF+4              ;预先存放在OUT_BUFF相应位置
                MOV @R1,A

                SETB F_GET



INTS_RETI:
                POP PSW
                POP A
                RETI






;***********************************************************************
;  每2秒钟刷新一次屏幕,或在没有满6个的情况下,有新的进来,也启动刷新
;    如果6个都显示,耗时最长:100MS
;
;**************************************************************************
DIS_REFRESH:
       LCALL CLRLCD

       MOV A,PAIDUI
       CJNE A,#00H,DIS_REFRESH_0        ;根据排队的个数判断是否需要显示
       NOP
       NOP
       LJMP DIS_REFRESH_OTHER           ;没有要显示的,就清屏或显示其他画面
DIS_REFRESH_0:
        MOV R3,PAIDUI
        MOV R0,#GET_BUFF

DIS_REFRESH_1:
        MOV X_ADD,#0                    ;1
        MOV Y_ADD,#0
        MOV DPTR,#SHUZI_1
        LCALL OUTSHUZI

        MOV X_ADD,#00                   ;、
        MOV Y_ADD,#08
        MOV DPTR,#ZIMU_DUNHAO
        LCALL OUTSHUZI

        MOV X_ADD,#0                    ;台
        MOV Y_ADD,#32
        MOV DPTR,#HZ_TAI_2
        LCALL OUTHZ16

        MOV SHUZI,@R0
        LCALL SHUZI_PRO                 ;计算出低位的DPTR,高位的放在DPH_BAK,和DPL_BAK中


        MOV X_ADD,#0
        MOV Y_ADD,#24
        LCALL OUTSHUZI

        MOV X_ADD,#0
        MOV Y_ADD,#16
        MOV DPH,DPH_BAK
        MOV DPL,DPL_BAK
        LCALL OUTSHUZI
;***************************************************************
        INC R0
        DJNZ R3,DIS_NEXT_0
        LJMP DIS_REFRESH_END
;********************************************************************
DIS_NEXT_0:

        MOV X_ADD,#0                    ;2
        MOV Y_ADD,#77
        MOV DPTR,#SHUZI_2
        LCALL OUTSHUZI

        MOV X_ADD,#00                    ;、
        MOV Y_ADD,#85
        MOV DPTR,#ZIMU_DUNHAO
        LCALL OUTSHUZI


        MOV X_ADD,#0                    ;台
        MOV Y_ADD,#112
        MOV DPTR,#HZ_TAI_2
        LCALL OUTHZ16

        MOV SHUZI,@R0
        LCALL SHUZI_PRO                 ;计算出低位的DPTR,高位的放在DPH_BAK,和DPL_BAK中

        MOV X_ADD,#0
        MOV Y_ADD,#104
        LCALL OUTSHUZI

        MOV X_ADD,#0
        MOV Y_ADD,#96
        MOV DPH,DPH_BAK
        MOV DPL,DPL_BAK
        LCALL OUTSHUZI
;***************************************************************
        INC R0
        DJNZ R3,DIS_NEXT_1
        LJMP DIS_REFRESH_END

;***********第2行**********************************************
DIS_NEXT_1:

        MOV X_ADD,#3                    ;3
        MOV Y_ADD,#0
        MOV DPTR,#SHUZI_3
        LCALL OUTSHUZI

        MOV X_ADD,#03                   ;、
        MOV Y_ADD,#08
        MOV DPTR,#ZIMU_DUNHAO
        LCALL OUTSHUZI

        MOV X_ADD,#3                    ;台
        MOV Y_ADD,#32
        MOV DPTR,#HZ_TAI_2
        LCALL OUTHZ16

        MOV SHUZI,@R0
        LCALL SHUZI_PRO                 ;计算出低位的DPTR,高位的放在DPH_BAK,和DPL_BAK中

        MOV X_ADD,#3
        MOV Y_ADD,#24
        LCALL OUTSHUZI

        MOV X_ADD,#3
        MOV Y_ADD,#16
        MOV DPH,DPH_BAK
        MOV DPL,DPL_BAK
        LCALL OUTSHUZI
;***************************************************************
        INC R0
        DJNZ R3,DIS_NEXT_2
        LJMP DIS_REFRESH_END
;********************************************************************
DIS_NEXT_2:

        MOV X_ADD,#3                    ;4
        MOV Y_ADD,#77
        MOV DPTR,#SHUZI_4
        LCALL OUTSHUZI

        MOV X_ADD,#3                    ;、
        MOV Y_ADD,#85
        MOV DPTR,#ZIMU_DUNHAO
        LCALL OUTSHUZI


        MOV X_ADD,#3                    ;台
        MOV Y_ADD,#112
        MOV DPTR,#HZ_TAI_2
        LCALL OUTHZ16

        MOV SHUZI,@R0
        LCALL SHUZI_PRO                 ;计算出低位的DPTR,高位的放在DPH_BAK,和DPL_BAK中

        MOV X_ADD,#3
        MOV Y_ADD,#104
        LCALL OUTSHUZI

        MOV X_ADD,#3
        MOV Y_ADD,#96
        MOV DPH,DPH_BAK
        MOV DPL,DPL_BAK
        LCALL OUTSHUZI
;***************************************************************
        INC R0
        DJNZ R3,DIS_NEXT_3
        LJMP DIS_REFRESH_END


;*********************第3行*******************************
 DIS_NEXT_3:
        MOV X_ADD,#6                    ;5
        MOV Y_ADD,#0
        MOV DPTR,#SHUZI_5
        LCALL OUTSHUZI

        MOV X_ADD,#06                   ;、
        MOV Y_ADD,#08
        MOV DPTR,#ZIMU_DUNHAO
        LCALL OUTSHUZI

        MOV X_ADD,#6                    ;台
        MOV Y_ADD,#32
        MOV DPTR,#HZ_TAI_2
        LCALL OUTHZ16

        MOV SHUZI,@R0
        LCALL SHUZI_PRO                 ;计算出低位的DPTR,高位的放在DPH_BAK,和DPL_BAK中

        MOV X_ADD,#6
        MOV Y_ADD,#24
        LCALL OUTSHUZI

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -