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

📄 c2262.asm

📁 餐饮呼叫系统的汇编源代码
💻 ASM
字号:
;****使用764做调幅2262控制输出****餐台呼叫器**************
;

OUT     BIT P0.1
KEY     BIT P1.3     ;INT0




;************************************
F_GET_KEY	BIT 01H
F_TIMEUP        BIT     12H
F_DELAY_OK      BIT     13H             ;选定的延时完成了的标志


;*************************************
OUT_TIMER_H	EQU	042H	;
OUT_TIMER_L     EQU     043H    ;
DELAY_NO        EQU     044H    ;现在正在使用的延时选择号
DELAY_TIME      EQU     045H    ;延时的时间,在定时中断中会进行递减
;*******764****************************
ORG 0000H
     NOP
AJMP SYS_START



ORG 0003H           ;X INT 0
NOP
LJMP INT_KEY0


ORG 001BH          ;  TIME1 OUT,
NOP
LJMP INT_TIMER1


;*************************************************
SYS_START:

             CLR EA
             MOV SP,#070H	;堆栈从070开始

             MOV P0M1,#00000000B       ;
             MOV P0M2,#00000001B       ;

                MOV TMOD,#011H	         ;T0和T1为16位定时器
		MOV TCON,#055H		;外部中断1下降沿触发

		SETB EX0
                SETB ET1
		SETB EA


                CLR OUT

;***********************************************************************
CLEAR_RAM:
          MOV R0,#00H
CLEAR_RAM0:
          MOV @R0,#00H
          INC R0
          MOV A,R0
	  NOP
	  NOP
          CJNE A,#070H,CLEAR_RAM0
          NOP
          NOP


;*********开机10秒内没有任何操作的,就会进入省电模式***************

        ;MOV OUT_TIMER_H,#1              ; 12s  TIMER SET
        ;MOV OUT_TIMER_L,#0B2H

        MOV OUT_TIMER_H,#1              ; 5s  TIMER SET
        MOV OUT_TIMER_L,#051H

;******************************************************
SYS_START1:

	JNB F_GET_KEY,SYS_START2
        CLR F_GET_KEY

        MOV DPTR,#TIME_TABLE            ;取出这一次的延时时间
        MOV A,DELAY_NO
        CJNE A,#7,CHOOSE_TIME_1
        MOV DELAY_NO,#0
CHOOSE_TIME_1:
        MOV A,DELAY_NO
        MOVC A,@A+DPTR
        MOV DELAY_TIME,A
        CLR F_DELAY_OK
        INC DELAY_NO
        SETB ET1
CHOOSE_TIME_2:				;延时开始
        NOP
        JNB F_DELAY_OK,CHOOSE_TIME_2
        CLR ET1

        SETB OUT
        LCALL DELAY_100MS
        LCALL DELAY_100MS
        LCALL DELAY_100MS
        ;LCALL DELAY_50MS
        LCALL DELAY_100MS

        CLR OUT
        ;LCALL DELAY_100S
        ;LCALL DELAY_5S

        SETB F_TIMEUP
SYS_START2:
        JNB F_TIMEUP,SYS_START3
        CLR F_TIMEUP
        SETB EX1
        CLR ET1
        MOV PCON,#02H                   ;STOP
        NOP
        NOP
        LJMP SYS_START1


SYS_START3:
        NOP
        NOP
        LJMP SYS_START1


TIME_TABLE:                             ;每次差200MS
DB 1,7,0DH,13H,19H,20H,27H,30H

;*************************70MS中断一次*************************8
INT_TIMER1:
        PUSH A
        PUSH PSW

        DJNZ DELAY_TIME,INT_TIMER0_1
        SETB F_DELAY_OK

INT_TIMER0_1:
         ;JNB F_START_COUNT,INT_TIMER0_2
         NOP
         NOP
         DJNZ OUT_TIMER_L,INT_TIMER0_2
         NOP
         NOP
         DJNZ OUT_TIMER_H,INT_TIMER0_2
         SETB F_TIMEUP
INT_TIMER0_2:

	MOV TH1,#00H
	MOV TL1,#05H

	POP PSW
	POP A
	RETI

;*****************************************************************
INT_KEY0:
        MOV C,KEY
        JC NO_KEY
        LCALL DELAY_1MS
        LCALL DELAY_1MS
        LCALL DELAY_1MS
        MOV C,KEY
        JC NO_KEY
        SETB F_GET_KEY
        AJMP INT_KEY0_RETI


NO_KEY:
        MOV OUT_TIMER_H,#1              ;
        MOV OUT_TIMER_L,#01H
        SETB ET1                        ;如果是错误的抖动,就设置很短的时间,让进入STOP

INT_KEY0_RETI:
        RETI
;******************************************
DELAY_100MS:
        NOP
        MOV R6,#055H
        MOV R7,#055H
DELAY_100MS_1:
		NOP
		NOP
	DJNZ R6,DELAY_100MS_1
                NOP
                NOP
        DJNZ R7,DELAY_100MS_1
	        RET
;******************************************
DELAY_50MS:
        NOP
        MOV R6,#0AAH
        MOV R7,#02AH
DELAY_50MS_1:
		NOP
		NOP
	DJNZ R6,DELAY_50MS_1
                NOP
                NOP
        DJNZ R7,DELAY_50MS_1
	        RET

;***************2分频下的1MS 延时*****************************
DELAY_1MS:
        NOP
        MOV R6,#0E3H
        MOV R7,#01H
DELAY_1MS_1:
		NOP
		NOP
	DJNZ R6,DELAY_1MS_1
                NOP
                NOP
        DJNZ R7,DELAY_1MS_1
	     	NOP
		NOP
                RET
;**************************************

DELAY_100S:
        NOP
        MOV R4,#00H
        MOV R5,#00H
        MOV R6,#00H
        MOV R7,#02H
DELAY_100S_1:
		NOP
		NOP
	DJNZ R4,DELAY_100S_1
                NOP
                NOP
        DJNZ R5,DELAY_100S_1
		NOP
		NOP
	DJNZ R6,DELAY_100S_1
                NOP
                NOP
        DJNZ R7,DELAY_100S_1
	        RET


DELAY_5S:
        NOP
        MOV R4,#00H
        MOV R5,#00H
        MOV R6,#015
DELAY_5S_1:
		NOP
		NOP
	DJNZ R4,DELAY_5S_1
                NOP
                NOP
        DJNZ R5,DELAY_5S_1
		NOP
		NOP
	DJNZ R6,DELAY_5S_1
	        RET


	ORG 0FA0H
ERR:				;ROM的最后,当程序错误跳到外面,最后会执行到这里,返回
        NOP
	NOP
	LJMP SYS_START


        END

⌨️ 快捷键说明

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