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

📄 红外接收eeprom.asm

📁 红外线的对频程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
             MOV          33H,28H
             MOV          34H,#14H
             AJMP   JIESHUZHOUT555
NAGEAIQU111: CJNE   A,#02H,NAGEAIQU222
             MOV          31H,#14H
             MOV          32H,27H
             MOV          33H,#14H
             MOV          34H,#14H
             AJMP   JIESHUZHOUT555
NAGEAIQU222:   CJNE   A,#03H,NAGEAIQU333
             MOV          31H,26H
             MOV          32H,#0AH
             MOV          33H,#14H
             MOV          34H,#14H
             AJMP   JIESHUZHOUT555
NAGEAIQU333:   CJNE   A,#04H,JIESHUZHOUT444
             MOV          31H,#14H
             MOV          32H,#0AH
             MOV          33H,#14H
             MOV          34H,29H
             AJMP   JIESHUZHOUT555
JIESHUZHOUT444:  CJNE  A,#05H,JIESHUZHOUT555
             MOV          31H,26H
             MOV          32H,27H
             MOV          33H,28H
             MOV          34H,29H            
JIESHUZHOUT555:RET
;
KEYFUN00:    JB     P1.1,DSFSFAS
KEYFUN0011:  JNB    P1.1,KEYFUN0011
             LCALL  YASHIJI
             JNB    P1.1,KEYFUN0011
             INC    WEISHU				;个位数加1
             MOV    A,WEISHU			;
             CLR    C				;
             CJNE   A,#06H,JHLLURYEE		;判断是否小于10
JHLLURYEE:   JC     DSFSFAS1			;小于10转FUN02OUT
             MOV    WEISHU,#01H			;大于或等于10清为0
DSFSFAS1:    LCALL  EEPROM_XIE
DSFSFAS:     RET						;
;
YASHIJI:     LCALL  DISPLAY
             LCALL  DISPLAY
             LCALL  DISPLAY
             LCALL  DISPLAY
             LCALL  DISPLAY
             LCALL  DISPLAY
             LCALL  DISPLAY
             LCALL  DISPLAY
             LCALL  DISPLAY
             LCALL  DISPLAY
             LCALL  DISPLAY
             RET
;
DINGSHI:     JB     P1.2,RGERRTHRTH
DINGSHI1:    LCALL  YASHIJI
             JNB    P1.2,DINGSHI1
             LCALL  YASHIJI
             JNB    P1.2,DINGSHI1
             MOV    A,WEISHU
             CJNE   A,#01H,NAGEAIQU1
KEYFUN01:    CLR    A
             INC    28H          	        ;百位数加1
             MOV    A,28H        	        ;入A
             CLR    C         		        ;清进位标志
             CJNE   A,#04H,FUN001                ;                    ;百位小于2转FUNOO0UT
             MOV    28H,#08H
             AJMP   FUN0013                    ;大于等于2清为0(百位只能是0或1)
FUN001:      CJNE   A,#09H,FUN0012
             MOV    28H,#09H
             AJMP   FUN0013
FUN0012:     CJNE   A,#0AH,FUN0013
             MOV    28H,#00H
FUN0013:     LCALL  DISPUPDAT             ;写入控制芯片(修改发射频率)
             AJMP   NAGEAIQU
NAGEAIQU1:   CJNE   A,#02H,NAGEAIQU2
             CLR    A
             INC    27H				;个位数加1
             MOV    A,27H			;
             CLR    C				;
             CJNE   A,#0AH,FUN02		;判断是否小于10
FUN02:       JC     FUN02OUT			;小于10转FUN02OUT
             MOV    27H,#00H			;大于或等于10清为0
FUN02OUT:    LCALL  DISPUPDAT                   ;写入控制芯片(修改发射频率)
             AJMP   NAGEAIQU
NAGEAIQU2:   CJNE   A,#03H,NAGEAIQU3
             CLR    A
             INC    26H				;个位数加1
             MOV    A,26H			;
             CLR    C				;
             CJNE   A,#0AH,FUN03		;判断是不小于10
FUN03:       JC     FUN03OUT			;小于10转FUN03OUT
             MOV    26H,#00H			;大于或等于10清为0
FUN03OUT:    LCALL  DISPUPDAT                   ;写入控制芯片(修改发射频率)
             AJMP   NAGEAIQU
NAGEAIQU3:   CJNE   A,#04H,NAGEAIQU
             CLR    A
             INC    29H				;个位数加1
             MOV    A,29H			;
             CLR    C				;
             CJNE   A,#02H,FUN04		;判断是不小于10
FUN04:       JC     FUN04OUT			;小于10转FUN03OUT
             MOV    29H,#00H			;大于或等于10清为0
FUN04OUT:    LCALL  DISPUPDAT                   ;写入控制芯片(修改发射频率)
NAGEAIQU:    LCALL  DISPLAY
             LCALL  EEPROM_XIE
RGERRTHRTH:  RET
; 将BCD码转为十六进制数,与5位控制码合成操作码,写入控制芯片
DISPUPDAT:   LCALL  BCDB       		; 调BCD码转为十六进制数程序
             LCALL  CONCOMMAND  	; 调与5位控制码合成操作码程序
             LCALL  PUTBIT       	; 发控制字至BH1415
             RET   					;返回
;
; 将BCD码转为十六进制数程序
BCDB:        MOV    A,#00H
             MOV    CONBITL,#00H   	; 控制字清0
             MOV    CONBITH,#00H   	; 控制字清0
             MOV    CONBITL,26H   	;小数位数放入控制字低8位
             MOV    A,27H   			;个位数乘10操作
             MOV    B,#10   			;
             LCALL  MULLOOP   		;调乘法子程序
             MOV    A,28H   			;十位数乘100操作
             MOV    B,#100   		;
             LCALL  MULLOOP   		; 调乘法子程序
             MOV    A,29H   			;
             JNZ    ADD3E8   		;百位数为1转ADD3E8(加1000操作)
             RET   					; 百位数为0退出
ADD3E8:      CLR    C   				;清进位档标志
             MOV    A,#0E8H   			;低8位加法
             ADD    A,CONBITL   			;累加
             MOV    CONBITL,A   			;放回CONBITL
             MOV    A,#03H   			; 高8位加法
             ADDC   A,CONBITH   			;控制字高8位处理
             MOV    CONBITH,A   			;放回CONBITH
             RET   						;返回
;
;乘法及累加处理程序(将四位显示的十进制BCD码转为1个二进制数)
MULLOOP:     MUL    AB   				;乘法
             CLR    C   					;清进位标志
             ADD    A,CONBITL   			;积低8位与CONBITL相加
             MOV    CONBITL,A   			;放回CONBITL
             MOV    A,CONBITH   			;
             ADDC   A,B   				;积高8位与CONBITH带进位累加
             MOV    CONBITH,A   			;放回CONBITH
             RET   						;返回
;
;频率控制数据与5位控制码合成BH1415控制字
CONCOMMAND:  ANL   CONBITH,#07H   		;高四位为0
             MOV   A,#40H   			;控制字放入A
             ORL   A,CONBITH   			;合成控制字
             MOV   CONBITH,A   			;放回CONBITH
             RET   						;返回
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;           发送控制字节子程序        ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
PUTBIT:      MOV   A,CONBITL   			;低8位控制字入A
             SETB  CSCEF   	;片选			;BH1415使能(允许写)
             LCALL PUT
             MOV   A,CONBITH   			; 高8位控制字入A
             LCALL PUT   				; 发送8位
             CLR   CSCEF   	;片选			; BH1415写禁止
             CLR   DATAF   				;复位
             CLR   CLOCKF   				;复位
             RET   						;返回
;
;字节发送子程序
PUT:         MOV   R3,#8   				;发送8位控制
             CLR   C   					;清C
PUT1:        RRC   A   					;带进位位右移(先发低位)
             MOV   DATAF,C   				;低位送至P3.0口
             NOP   						;延时4微秒
             NOP   						;
             NOP   						;
             NOP   						;
             SETB  CLOCKF   				;锁存数据(上升沿时锁存数据)
             NOP   						;延时4微秒
             NOP   						;
             NOP   						;
             NOP   						;
             CLR   CLOCKF   				;
             DJNZ  R3,PUT1   			;8位未发完转PUT1再发
             RET   						; 8位发完结束
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;           显示程序                  ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 显示数据在70H-75H单元内,用六位LED共阳数码管显示,P1口输出段码数据,P3口作
; 扫描控制,每个LED数码管亮1MS时间再逐位循环。
          DISPLAY: LCALL        JIESHUZHIIN
                   MOV          A,#0AH
                   ADD          A,32H
                   MOV          32H,A
                   MOV 		R1,#31H       ;指向显示数据首址
                   MOV 		R5,#0FEH      ;扫描控制字初值
             PLAY: MOV 		A,R5          ;扫描字放入A
                   MOV 		P2,A          ;从P3口输出
                   MOV 		A,@R1         ;取显示数据到A
                   MOV 		DPTR,#TAB     ;取段码表地址
                   MOVC		A,@A+DPTR     ;查显示数据对应段码
                   MOV 		P0,A          ;段码放入P1口
                   LCALL 	DL1MS         ;显示1MS
                   INC 		R1            ;指向下一地址
                   MOV 		A,R5            ;扫描控制字放入A
          ENDOUTA: JNB 		ACC.5,ENDOUT    ;ACC.5=0时一次显示结束
                   RL 		A               ;A中数据循环左移
                   MOV 		R5,A            ;放回R5内
                   AJMP 	PLAY            ;跳回PLAY循环
           ENDOUT: SETB 	P2.5            ;一次显示结束,P3口复位
                   MOV 		P2,#0FFH     ;P3.7口为0时转时间调整程序
                   RET                      ;子程序返回
             TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
                  DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H,0BFH
;共阳段码表          "0""1""2" "3""4""5""6""7" "8""9""不亮"
;
;513微秒延时子程序
DL513:       MOV   R3,#0FFH
DL513LOOP:   DJNZ  R3,DL513LOOP
             RET
;
;1毫秒延时子程序(LED点亮用)
DL1MS:       MOV   R4,#02H
DL1MSLOOP:   LCALL DL513
             DJNZ  R4,DL1MSLOOP
             RET
;
;10毫秒延时子程序(消抖动用)
DL10MS:      MOV   R6,#0AH
DL10MSLOOP:  LCALL DL1MS
             DJNZ  R6,DL10MSLOOP
             RET
;
DL05S:       LCALL DL10MS
             LCALL DL10MS

             RET
;读
EEPROM_read:
     MOV   DPTR,#DATA_FLASH_START_ADDRES
     LCALL Byte_read
     MOV   26H,A
     MOV   DPTR,#DATA_FLASH_START_ADDRE
     LCALL Byte_read
     MOV   27H,A
     MOV   DPTR,#DATA_FLASH_START_ADDR
     LCALL Byte_read
     MOV   28H,A
     MOV   DPTR,#DATA_FLASH_START_ADD
     LCALL Byte_read
     MOV   29H,A
     RET
;写LCALL  EEPROM_XIE
EEPROM_XIE:
     MOV  DPTR,#DATA_FLASH_START_ADDRES
     ACALL sector_erase
     MOV   DPTR,#DATA_FLASH_START_ADDRES
     MOV   A,26H
     ACALL bute_program
     MOV  DPTR,#DATA_FLASH_START_ADDRE
     ACALL sector_erase
     MOV   DPTR,#DATA_FLASH_START_ADDRE
     MOV   A,27H
     ACALL bute_program
     MOV  DPTR,#DATA_FLASH_START_ADDR
     ACALL sector_erase
     MOV   DPTR,#DATA_FLASH_START_ADDR
     MOV   A,28H
     ACALL bute_program
     MOV  DPTR,#DATA_FLASH_START_ADD
     ACALL sector_erase
     MOV   DPTR,#DATA_FLASH_START_ADD
     MOV   A,29H
     ACALL bute_program
     RET
;EEPROM读
Byte_read:
      MOV   ISP_CONTR,#ENABLE_ISP
      MOV   ISP_CMD,#01             ;读指令
      MOV   ISP_ADDRH,DPH
      MOV   ISP_ADDRL,DPL
      CLR   EA
      MOV   ISP_TRIG,#46H
      MOV   ISP_TRIG,#0B9H
      NOP
      MOV    A,ISP_DATA
      SETB  EA
      ACALL  IAP_Disable
      RET
;字节编程---写
bute_program:
      MOV  ISP_CONTR,#ENABLE_ISP
      MOV  ISP_CMD,#02H          ;写指令
      MOV  ISP_ADDRH,DPH
      MOV  ISP_ADDRL,DPL
      MOV  ISP_DATA,A
      LCALL   trigger_ISP
      RET
;擦除扇区
sector_erase:
      MOV  ISP_CONTR,#ENABLE_ISP
      MOV  ISP_CMD,#03H         ;擦除扇区指令
      MOV  ISP_ADDRH,DPH
      MOV  ISP_ADDRL,DPL
      LCALL   trigger_ISP
      RET
;
trigger_ISP:
      CLR  EA
      MOV  ISP_TRIG,#46H
      MOV  ISP_TRIG,#0B9H
      NOP
      SETB  EA 
IAP_Disable:
      MOV  ISP_CONTR,#0
      MOV  ISP_CMD,#0
      MOV  ISP_TRIG,#0
      RET
;  
             END   							;程序结束

⌨️ 快捷键说明

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