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

📄 红外接收eeprom.asm

📁 红外线的对频程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;***************************;
;     数控调频手动控制器    ;
;***************************;
;发射控制芯片BH1415F
;P2和P0扫描显示LED
ISP_DATA   EQU  0E2H
ISP_ADDRH  EQU  0E3H
ISP_ADDRL  EQU  0E4H
ISP_CMD    EQU  0E5H
ISP_TRIG   EQU  0E6H
ISP_CONTR  EQU  0E7H
;ENABLE_ISP   EQU  83H  ;<5MHZ晶体
;ENABLE_ISP   EQU  82H  ;<10MHZ
ENABLE_ISP   EQU   81H  ;<20MHZ  (我用12MHZ)
;ENABLE_ISP   EQU  80H  ;>20MHZ
DATA_FLASH_START_ADDRES  EQU  2000H  ;STC89C/LE52RC扇区首地址--1扇区
DATA_FLASH_START_ADDRE  EQU  2200H  ;STC89C/LE52RC扇区首地址--2扇区
DATA_FLASH_START_ADDR  EQU  2400H  ;STC89C/LE52RC扇区首地址--3扇区
DATA_FLASH_START_ADD  EQU  2600H  ;STC89C/LE52RC扇区首地址--4扇区
DEBUG_DATA   EQU   5AH            ;零时储存
LINGSHI2      EQU  3AH
LINGSHI3      EQU  3BH
LINGSHI4      EQU  3CH
LINGSHI5      EQU  3DH
GUANZHONGDUA  EQU  40H
LINGSHI  EQU  2FH  ;零时
WEISHU   EQU  30H  ;位数指示
XIANSHI  EQU  31H  ;位指示
CONBITL  EQU  21H  ;频率控制字节低8位
CONBITH  EQU  22H  ;频率控制字节高8位
KEYWORD  EQU  23H  ;存放键扫描时P1口值
Muting   EQU  P2.0    ;发射静音
DATAF    EQU  P2.1    ;发射数据
CLOCKF   EQU  P2.2    ;发射时钟
CSCEF    EQU  P2.3    ;发射片选
;
;
              ORG	0000H   ;程序开始地址
              LJMP      START    ;转START执行
              ORG 	0003H       ;
              LJMP      INTEX0     ;不用中断程序
              ORG 	000BH       ;
	      RETI       		; 不用中断程序
              ORG 	0013H       ;
	      RETI       		; 不用中断程序
	      ORG 	001BH       ;
	      RETI       		; 不用中断程序
	      ORG 	0023H       ;
	      RETI       		; 不用中断程序
	      ORG	002BH      ;
 	      RETI       		; 不用中断程序
;
;初始化程序
CLEARMEN:    MOV   R0,#20H       ;20H-34H循环清0
             MOV   R1,#50H       ;
CLEARLOOP:   MOV   @R0,#00H      ;
             INC   R0       		 ;
             DJNZ  R1,CLEARLOOP  ;
             MOV   P1,#0FFH      ;
             MOV   P0,#0FFH
             MOV   P2,#0FFH
             MOV   P3,#0FFH
             CLR   Muting       ;发射开音BH1415禁止操作
             CLR   DATAF        ;发射数据
             CLR   CLOCKF       ;发射时钟
             CLR   CSCEF        ;发射片选
CLEAR1:      MOV   PCON,#00H    	;控制寄存器清0
             LCALL  EEPROM_read       	;
             LCALL DISPUPDAT    		;写入BH1415芯片(修改发送频率)
             MOV   WEISHU,#05H
             MOV   LINGSHI2,#00H
             MOV  LINGSHI,#01H
CLEARMEM:    MOV   IE,#00H         ;关所有中断
             SETB  EX0            ;开外中断
             SETB  EA            ;总中断允许
             MOV   GUANZHONGDUA,#00H
	     RET            			;子程序返回
;主程序
START:       LCALL  CLEARMEN       	;上电初始化
MAIN:        LCALL  KEYFUN00        	;调查键子程序
             LCALL  DINGSHI
             LCALL  DISPLAY        	;LED显示一次
             LCALL  DuPinLv
             AJMP   MAIN       		;转MAIN循环
             NOP       				;PC出错处理
             NOP       				;
             AJMP   START
;读起频率
DuPinLv:  JB  P1.5,JIESHUDU
DuPinLvQ: JNB P1.5,DuPinLvQ
          MOV  LINGSHI,#01H
          SETB  EX0
JIESHUDU: RET
;******************************
;     遥控接收程序
;******************************
;采用中断接收
INTEX0:         PUSH    ACC
                PUSH    PSW
                CLR     EX0            		;关外中断
                JNB     P3.2,READ1     		;P3.1口为低电平转READ1
READOUTT0:      MOV     A,LINGSHI2
                CJNE    A,#01H,TIAO11
                MOV     A,LINGSHI
                CJNE    A,#01H,TIAO11  ;26h
                MOV     29H,2DH
                INC     LINGSHI
                LJMP    ZhongDuan
TIAO11:         MOV     A,LINGSHI3
                CJNE    A,#02H,TIAO12
                MOV     A,LINGSHI
                CJNE    A,#02H,TIAO12  ;27h
                MOV     26H,2AH
                INC     LINGSHI
                LJMP    ZhongDuan
TIAO12:         MOV     A,LINGSHI4
                CJNE    A,#03H,TIAO13
                MOV     A,LINGSHI
                CJNE    A,#03H,TIAO13  ;28h
                MOV     27H,2BH
                INC     LINGSHI
                LJMP    ZhongDuan
TIAO13:         MOV     A,LINGSHI5
                CJNE    A,#04H,ZhongDuan
                MOV     A,LINGSHI
                CJNE    A,#04H,ZhongDuan  ;29h
                MOV     28H,2CH
                MOV     LINGSHI,#00H
                POP     PSW 
                POP     ACC
                CLR     EX0
                LCALL  DISPUPDAT
                LCALL  EEPROM_XIE
                LJMP    ZhongDuan2
ZhongDuan:      POP     PSW 
                POP     ACC
                SETB    EX0
ZhongDuan2:     RETI            			;退出中断
;
READ1:          CLR     A            		;清A
                MOV     DPH,A            	;清DPTR
                MOV     DPL,A            	;
HARD1:          JB      P3.3,HARD11        	;P3.1变高电平转HARD11
                INC     DPTR            	;用DPTR对低电平计数
                NOP            				;1微秒延时
                NOP
                AJMP    HARD1            	;转HARD1循环(循环周期为8微秒)
HARD11:         MOV     A,DPH            	;DPTR高8位放入A
                JZ      READOUTT0          	;为0(脉宽小于8*255=2毫秒)退出
                CLR     A           	    ;不为0,说明是第一个宽脉冲(3毫秒)
READ11:         INC     A            		;脉冲个数计1
READ12:         JNB     P3.3,READ12        	;低电平时等待
                MOV     R1,#06H            	;高电平宽度判断定时值
READ13:         JNB     P3.3,READ11        	;变低电平时转READ11脉冲计数
                LCALL   DELAY            	;延时(512微秒)
                DJNZ    R1,READ13
                DEC     A
                DEC     A          	;6次延时不到转READ13再延时
                JZ      FUN0
                DEC     A            		;超过3毫秒判为结束,减1
                JZ      FUN1
                DEC     A            		;减1
                JZ      FUN2            	;为0执行FUN0(2个脉冲)
                DEC     A            		;减1
                JZ      FUN3            	;为0执行FUN1(3个脉冲)
                DEC     A            		;
                JZ      FUN4            	;为0执行FUN2(4个脉冲)
                DEC     A            		;
                JZ      FUN5            	;为0执行FUN3(5个脉冲)
                DEC     A            		;
                JZ      FUN6            	;为0执行FUN4(6个脉冲)
                DEC     A            		;
                JZ      FUN7            	;为0执行FUN5(7个脉冲)
                DEC     A            		;
                JZ      FUN8           	;为0执行FUN6(8个脉冲)
                DEC     A            		;
                JZ      FUN9            	;为0执行FUN7(9个脉冲)
                DEC     A            		;
                JZ      FUN10            	;为0执行FUN8(10个脉冲)
                DEC     A            		;
                JZ      FUN11            	;为0执行FUN5(7个脉冲)
                DEC     A            		;
                JZ      FUN12           	;为0执行FUN6(8个脉冲)
                DEC     A            		;
                JZ      FUN13            	;为0执行FUN7(9个脉冲)
                DEC     A            		;
                JZ      FUN14 
                NOP            				;
                NOP            				;
                LJMP    READOUTT0          	;出错退出
;
FUN0:           LCALL   YII         		;P0口各端口开关输出控制
                LJMP    READOUTT0          	;转中断退出
FUN1:           LCALL   EERR         		;
                LJMP    READOUTT0          	;
FUN2:           LCALL   SAN
                LJMP    READOUTT0
FUN3:           LCALL   SII
                LJMP    READOUTT0
FUN4:           LCALL   WUU
                LJMP    READOUTT0
FUN5:           LCALL   LIU
                LJMP    READOUTT0
FUN6:           LCALL   QII
                LJMP    READOUTT0
FUN7:           LCALL   BAA
                LJMP    READOUTT0
FUN8:           LCALL   JIU          		;P2口各端口开关输出控制
                LJMP    READOUTT0          	;转中断退出
FUN9:           LCALL   SHI
                LJMP    READOUTT0
FUN10:          LCALL     XIAOXIAO
                LJMP    READOUTT0
FUN11:          LCALL     GEWEIIII
                LJMP    READOUTT0
FUN12:          LCALL     ZHONG
                LJMP    READOUTT0
FUN13:          LCALL     GAO
                LJMP    READOUTT0
FUN14:          NOP          		;P2.0口开关控制
                LJMP    READOUTT0          	;转中断退出
FUN15:          NOP         		;亮度调整
                LJMP    READOUTT0          	;中断退出
;
GAO:            MOV     LINGSHI2,#04H
                MOV     LINGSHI3,#04H
                MOV     LINGSHI4,#04H
                MOV     LINGSHI5,#04H
                RET
;
ZHONG:          MOV     LINGSHI2,#03H
                MOV     LINGSHI3,#03H
                MOV     LINGSHI4,#03H
                MOV     LINGSHI5,#03H
                RET
;
GEWEIIII:       MOV     LINGSHI2,#02H
                MOV     LINGSHI3,#02H
                MOV     LINGSHI4,#02H
                MOV     LINGSHI5,#02H
                RET
;
XIAOXIAO:       MOV     LINGSHI2,#01H
                MOV     LINGSHI3,#01H
                MOV     LINGSHI4,#01H
                MOV     LINGSHI5,#01H
                RET
;
YII:            MOV     2DH,#0
                MOV     2AH,#0
                MOV     2BH,#0
                MOV     2CH,#0
                RET
;
EERR:           MOV     2DH,#1
                MOV     2AH,#1
                MOV     2BH,#1
                MOV     2CH,#1
                RET
;
SAN:            MOV     2DH,#2
                MOV     2AH,#2
                MOV     2BH,#2
                MOV     2CH,#2
                RET
;
SII:            MOV     2DH,#3
                MOV     2AH,#3
                MOV     2BH,#3
                MOV     2CH,#3
                RET
;
WUU:            MOV     2DH,#4
                MOV     2AH,#4
                MOV     2BH,#4
                MOV     2CH,#4
                RET
;
LIU:            MOV     2DH,#5
                MOV     2AH,#5
                MOV     2BH,#5
                MOV     2CH,#5
                RET
;
QII:            MOV     2DH,#6
                MOV     2AH,#6
                MOV     2BH,#6
                MOV     2CH,#6
                RET
;
BAA:            MOV     2DH,#7
                MOV     2AH,#7
                MOV     2BH,#7
                MOV     2CH,#7
                RET
;
JIU:            MOV     2DH,#8
                MOV     2AH,#8
                MOV     2BH,#8
                MOV     2CH,#8
                RET
;
SHI:            MOV     2DH,#9
                MOV     2AH,#9
                MOV     2BH,#9
                MOV     2CH,#9
                RET
;*************************************
;*      延时 255 X 2 = 512 us       *
;*************************************
;
DELAY:          MOV     R0,#0FFH
DELAY1:         DJNZ    R0,DELAY1
		RET
;    
;位数指示
JIESHUZHIIN: MOV    A,WEISHU
             CJNE   A,#01H,NAGEAIQU111
             MOV          31H,#14H
             MOV          32H,#0AH

⌨️ 快捷键说明

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