📄 红外发送eeprom.asm
字号:
LCALL PUT
MOV A,CONBITH ; 高8位控制字入A
LCALL PUT ; 发送8位
CLR CSCEF ;片选 ; BH1415写禁止
CLR DATAF ;复位
CLR CLOCKF
RET
;
MOV A,CONBITL ;低8位控制字入A
SETB CSCEFF ;片选 ;BH1415使能(允许写)
LCALL PUTTT
MOV A,CONBITH ; 高8位控制字入A
LCALL PUTTT ; 发送8位
CLR CSCEFF ;片选 ; BH1415写禁止
CLR DATAFF ;复位
CLR CLOCKFF ;复位
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位发完结束
;
;字节发送子程序
PUTT: CLR C ;清C
PUTT1: RLC A ;带进位位右移(先发低位)
MOV DATA,C ;低位送至P3.0口
NOP ;延时4微秒
NOP ;
NOP ;
NOP ;
CLR CLOCK ;锁存数据(上升沿时锁存数据)
NOP ;延时4微秒
NOP ;
NOP ;
NOP ;
SETB CLOCK
NOP ;延时4微秒
NOP ;
NOP ;
NOP ;
DJNZ R3,PUTT1 ;8位未发完转PUT1再发
RET
;
;字节发送子程序
PUTTT: MOV R3,#8
CLR C ;清C
PUTTT1: RRC A ;带进位位右移(先发低位)
MOV DATAFF,C ;低位送至P3.0口
NOP ;延时4微秒
NOP ;
NOP ;
NOP ;
CLR CLOCKFF ;锁存数据(上升沿时锁存数据)
NOP ;延时4微秒
NOP ;
NOP ;
NOP ;
SETB CLOCKFF
DJNZ R3,PUTTT1 ;8位未发完转PUT1再发
RET
;*************************************
;* *
;* 编 码 发 射 程 序 *
;* *
;*************************************
;发送扫描
OUT_HongWaiXian:MOV A,#0CH ;小位指数
LCALL REMOTE
MOV A,26H ;26H
INC A
INC A
LCALL REMOTE
MOV A,#0DH ;个位指数
LCALL REMOTE
MOV A,27H ;27H
INC A
INC A
LCALL REMOTE
MOV A,#0EH ;十位指数
LCALL REMOTE
MOV A,28H ;28H
INC A
INC A
LCALL REMOTE
MOV A,#0FH ;百位指数
LCALL REMOTE
MOV A,29H ;29H
INC A
INC A
LCALL REMOTE
RET
;
REMOTE: MOV R1,A ;装入发射脉冲个数
LJMP OUT3 ;转第一个码发射处理
OUT: MOV R0,#55H ;1MS宽低电平发射控制数据
OUT1: SETB ET1 ;开T1中断
SETB TR1 ;开启定时器T1
NOP ;延时
NOP
NOP
NOP
NOP
DJNZ R0,OUT1 ;时间不到转OUT1再循环
MOV R0,#32H ;1MS高电平间隙控制数据
OUT2: CLR TR1 ;关定时器T1
CLR ET1 ;关T1中断
CLR HONG ;关脉冲输出
NOP ;空操作延时
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R0,OUT2 ;时间不到转OUT2再循环
DJNZ R1,OUT ;脉冲未发完,转OUT再循环发射
LCALL DL10MS
RET ;
OUT3: MOV R0,#0FFH ;装发谢3MS宽控制数据
LJMP OUT1 ;转OUT1
;
;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
LCALL DL10MS
LCALL DL10MS
LCALL DL10MS
LCALL DL10MS
LCALL DL10MS
LCALL DL10MS
LCALL DL10MS
RET
;
XIANSHIA: LCALL JIESHUZHIINB
MOV A,41H
MOV DPTR,#TABDZI
MOVC A,@A+DPTR
MOV LCDH,A
MOV LCDL,#0
LCALL HECHENG
MOV A,42H
MOV DPTR,#TABDZI
MOVC A,@A+DPTR
MOV LCDH,A
MOV LCDL,#7
LCALL HECHENG
MOV A,43H
MOV DPTR,#TABDZI
MOVC A,@A+DPTR
MOV LCDH,A
MOV LCDL,#14
LCALL HECHENG
MOV A,44H
MOV DPTR,#TABDZI
MOVC A,@A+DPTR
MOV LCDH,A
MOV LCDL,#21
LCALL HECHENG
MOV B,#01110001B ;小数点1
LCALL LCDPLAY
MOV B,#01111101B ;小数点2
LCALL LCDPLAY
MOV B,#01111001B ;小数点3
LCALL LCDPLAY
RET
;位数指示
JIESHUZHIINB: MOV A,WEISHU
CJNE A,#01H,NAGEAIQU1111
MOV 41H,#0AH
MOV 42H,#0AH
MOV 43H,28H
MOV 44H,#0AH
AJMP JIESHUZHOUT5555
NAGEAIQU1111: CJNE A,#02H,NAGEAIQU2222
MOV 41H,#0AH
MOV 42H,27H
MOV 43H,#0AH
MOV 44H,#0AH
AJMP JIESHUZHOUT5555
NAGEAIQU2222: CJNE A,#03H,NAGEAIQU3333
MOV 41H,26H
MOV 42H,#0AH
MOV 43H,#0AH
MOV 44H,#0AH
AJMP JIESHUZHOUT5555
NAGEAIQU3333: CJNE A,#04H,JIESHUZHOUT4444
MOV 41H,#0AH
MOV 42H,#0AH
MOV 43H,#0AH
MOV 44H,29H
AJMP JIESHUZHOUT5555
JIESHUZHOUT4444: CJNE A,#05H,JIESHUZHOUT5555
MOV 41H,26H
MOV 42H,27H
MOV 43H,28H
MOV 44H,29H
JIESHUZHOUT5555:RET
;读字节
DUZIJIE:MOV A,#10100000B
MOV R3,#3
CLR P3.5 ;LCD片选
LCALL PUTT
RET
;
LCDPLAY:LCALL DUZIJIE
MOV A,B ;字1
MOV R3,#10
LCALL PUTT
SETB P3.5 ;LCD片选
SETB P3.6 ;LCD时钟
SETB P3.7 ;LCD数据
RET
;红外发送个数
TABHONG: DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H
;LCD段码
TABDZI: DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H,02H,00H
; 0 1 2 3 4 5 6 7 8 9 灭
;读
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
CLR EA
MOV ISP_TRIG,#46H
MOV ISP_TRIG,#0B9H
NOP
SETB EA
ACALL IAP_Disable
RET
;擦除扇区
sector_erase:
MOV ISP_CONTR,#ENABLE_ISP
MOV ISP_CMD,#03H ;擦除扇区指令
MOV ISP_ADDRH,DPH
MOV ISP_ADDRL,DPL
CLR EA
MOV ISP_TRIG,#46H
MOV ISP_TRIG,#0B9H
NOP
SETB EA
ACALL IAP_Disable
RET
;
trigger_ISP:
CLR EA
MOV ISP_TRIG,#46H
MOV ISP_TRIG,#0B9H
NOP
SETB EA
RET
;
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 + -