红外解码51单片机程序
ORG 0000H
LJMP MAIN
;***************************************************************
ORG 0003 ;外部中断,
LJMP INTX
;***********************************************************
ORG 001BH
LJMP NNIT1
;**************************************************************
ORG 0030H
MAIN: MOV DPTR,#TAB
MOV R0,#30H ;起始地址
MOV R1,#00H ;初始计数
SETB EA
SETB EX0
SETB ET1
SETB IT0 ;: XIA JIANG YAN
MOV TMOD,#11H
CLR 20H ;20H用来判断是不是第一次中断
CLR 21H ;21H是判断是否接收完数据位
JNB 21H,$
;********************************************************************
LCALL START
;**************************************************** DISST: MOV R0,#30H ;初始化指针
MOV R1,#00H
MOV TH1,#00H
MOV TL1,#00H
;*************************************************
MOV P1,#0F0H
MOV R3,#00H
CLR TF1
SETB TR1
CLR P1.7
DIS: CJNE R3,#20,CT
MOV R3,#00H
;************************************************
MOV R4,#100
ERRO: CPL P3.7
LCALL DEL
DJNZ R4,ERRO
;***************************************************
INC R1
INC R0
INC R0
CPL P1.7
CNT: CJNE R1,#60,CT
LCALL LP
CT: MOV A,@R0
ANL A,#0FH
MOVC A,@A+DPTR
SETB P1.3
MOV P0,A
LCALL DEL
MOV A,@R0
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
CLR P1.3
SETB P1.2
MOV P0,A
LCALL DEL
INC R0
MOV A,@R0
ANL A,#0FH
;******************************************** 把:3:和:7:转成
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
0和1
CJNE A,#07H,NOT_1
MOV A,#01H
NOT_1: CJNE A,#03H,NOT_0
MOV A,#00H
;********************************************
NOT_0: MOVC A,@A+DPTR
CLR P1.2
SETB P1.1
MOV P0,A
LCALL DEL
MOV A,@R0
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
CLR P1.1
SETB P1.0
MOV P0,A
LCALL DEL
CLR P1.0
DEC R0
LJMP DIS
;*******************中断*****************************************
INTX: JB 20H,NEXT1
SETB 20H
MOV TL0,#00H
MOV TH0,#00H
SETB TR0
SJMP RETURN
JNB TF0,NEXT1 ERR: CPL P3.7
LCALL DEL
SJMP ERR
NEXT1: CLR TR0
MOV A,TH0
MOV B,A
MOV A,TL0
MOV TH0,#00H
MOV TL0,#00H
SETB TR0
MOV @R0,A
INC R0
MOV A,B
MOV @R0,A
INC R0
INC R1 ;接收到一个字,计数器加一
CJNE R1,#60,RETURN
CLR EX0 ;收完数据,关掉外部中断
SETB 21H
RETURN: RETI
;**********************定时**********************************************
;定时次数计数器用R3
NNIT1: CLR TR1
MOV TH1,#00H
MOV TL1,#00H
INC R3
CJNE R3,#21,NEXT
MOV R3,#00H
NEXT: SETB TR1
RETI
;*****************************************************
;**********************延量,毫秒
*****************************************************
DEL: MOV R6,#3 F1: MOV R5,#165
DJNZ R5,$
DJNZ R6,F1
RET
;**********************200MS************************************************
******
DEL1: MOV R7,#200 LL: ACALL DEL
DJNZ R7,LL
RET
;***************************************************************************
*
TAB: DB 0C0H ;0
DB 0F9H ;1
DB 0A4H ;2
DB 0B0H ;3
DB 99H ;4
DB 92H ;5
DB 82H ;6
DB 0F8H ;7
DB 80H ;8
DB 90H ;9
DB 88H ;A
DB 83H ;B
DB 0C6H ;C
DB 0A1H ;D
DB 86H ;E
DB 8EH ;F 15
DB 0C8H ;N 16
DB 0AFH ;R 17
DB 87H ;T 18
DB 0BFH ;- 19
DB 0F9H ;| 20
DB 0F6H ;= 21
DB 0CFH ;|- 22
DB 0CFH
;*********************显示结束信号
************************************************************
LP: MOV P1,#00H
CLR TR1 ;结束信号中关中断
CLR EA
MOV A,#13
MOVC A,@A+DPTR
SETB P1.3
MOV P0,A
LCALL DEL
MOV A,#16
MOVC A,@A+DPTR
MOV P0,A
CLR P1.3
SETB P1.2
LCALL DEL
MOV A,#14
MOVC A,@A+DPTR
CLR P1.2
SETB P1.1
MOV P0,A
LCALL DEL
LJMP LP
RET
;*******************显示开始信号
****************************************************************
START: MOV P1,#00H
MOV A,#19 ;"-"
MOVC A,@A+DPTR
SETB P1.0
MOV P0,A
LCALL DEL1
MOV A,P1
CLR C
RLC A
MOV P1,A
LCALL DEL1
RLC A
MOV P1,A
LCALL DEL1
RLC A
MOV P1,A
LCALL DEL1
MOV A,#20 ;"|"
MOVC A,@A+DPTR
MOV P0,A
LCALL DEL1
MOV A,#23 ;"="
MOVC A,@A+DPTR
MOV P0,A
LCALL DEL1
MOV A,#21 ;"="
MOVC A,@A+DPTR
MOV P0,A
LCALL DEL1
MOV A,P1
CLR C
RRC A
MOV P1,A
LCALL DEL1
RRC A
MOV P1,A
LCALL DEL1
RRC A
MOV P1,A
LCALL DEL1
MOV A,#22 ;"\"
MOVC A,@A+DPTR
MOV P0,A
LCALL DEL1
MOV A,#21
MOVC A,@A+DPTR
MOV P1,#0FH
MOV P0,A
LCALL DEL1
LCALL DEL1
LCALL DEL1
RET
;**************************************************************************
END