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

📄 ir32b02.asm

📁 实用遥控器编码程序1
💻 ASM
字号:
;**********************************************************;地穝IR  2in1-P        VER 01  DATE:2004-08-06;**********************************************************; 73key;----------------------------------------------------------; PC20, OSC=4MHz,   WDT_off,      Advance;----------------------------------------------------------; NEC6122 32bit(DVD) + HS3004(TV);----------------------------------------------------------INDF	EQU	00HTMR0	EQU	01HPCL	EQU	02HSTATUS	EQU	03HFSR	equ	04HPA	EQU	05H	;PORT APB	EQU	06H	;PORT BPC	EQU	07H	;PORT C;----------------------------------------------------------rflag	equ	08hbrep	equ	0	;130msb64	equ	1	;65.536msbeff	equ	2	;for NT changebtv	equ	3	;TV keybnt	equ	4	;NT bitbkey	equ	5	;TV DVD key actbcode	equ	6	;TV code out;----------------------------------------------------------;----------------------------------------------------------rkey	equ	0ah	;key value=1-36rkeyt	equ	0bh	;key tmp counterrkeyc	equ	0ch	;key on count, double key checkrpb	equ	0dh	;port B statusrirc	equ	0eh	;ir pulse countrcode1	equ	10h	;control codercode2	equ	11h	;data codercode3	equ	12hrcode4	equ	13hrcode5	equ	14hrcode6	equ	15hrshift	equ	18h	;ir out data bit countrtmp	equ	1bh	;ir pulse countrsub	equ	1ch	;delay sub countrout	equ	1dh	;for ir data out;----------------------------------------------------------	ORG	0x7ff	GOTO    start;----------------------------------------------------------	ORG	0	GOTO    start;----------------------------------------------------------ir01	BSF     pa,0		;9+17delay01	CLRWDT  	NOP     	NOP     	NOP     	NOP     	NOP     	NOP     	NOP  	BCF     pa,0	NOP     	NOP     	NOP     	NOP     	NOP     	NOP     	NOP     	NOP     	NOP     	RETLW   0;----------------------------------------------------------ir3044	movlw	.7	;7*26=182us	movwf	rtmpir304401	CALL    ir01	DECFSZ  rtmp,1	GOTO    ir304401	retlw	00h;----------------------------------------------------------delay3044h	movlw	.91	;283*26=7358u(7.36ms)	movwf	rtmp	goto	delay02delay3044	movlw	.191	;192*26=4992u(5ms)	movwf	rtmp	GOTO    delay02;----------------------------------------------------------irout	movlw	.22	;22*26=572us	movwf	rtmpirout01	CALL    ir01	DECFSZ  rtmp,1	GOTO    irout01	retlw	00h;----------------------------------------------------------delayh	movlw	.43	;86*26=2236	movwf	rtmp	goto	delay02delay	movlw	.21	;43*26=1118	movwf	rtmpdelay02	nop	CALL    delay01	DECFSZ  rtmp,1	GOTO    delay02	retlw	00h;----------------------------------------------------------row_b0	movf	pb,0	movwf	rtmp	movf	rpb,0	xorwf	rtmp,1	INCF    rkeyt,1	btfsc	rtmp,0	CALL    row_keyrow_b1	INCF    rkeyt,1	btfsc	rtmp,1	CALL    row_keyrow_b2	INCF    rkeyt,1	btfsc	rtmp,2	CALL    row_keyrow_b3	INCF    rkeyt,1	btfsc	rtmp,3	CALL    row_keyrow_b4	INCF    rkeyt,1	btfsc	rtmp,4	CALL    row_keyrow_b5	INCF    rkeyt,1	btfsc	rtmp,5	CALL    row_keyrow_b6	INCF    rkeyt,1	btfsc	rtmp,6	CALL    row_keyrow_b7	INCF    rkeyt,1	btfsc	rtmp,7	CALL    row_key	RETLW   0row_key	INCF    rkeyc,1	MOVF    rkeyt,0	MOVWF   rkey	RETLW   0;----------------------------------------------------------convert_dvd		;6122	ADDWF   PCL,1	retlw	0ffh	retlw	0ffh	retlw	0ffh	retlw	0ffh	;4	retlw	0ffh	retlw	0ffh	retlw	0ffh	retlw	0ffh	;8	retlw	0ffh	retlw	0ffh	retlw	0ffh	retlw	0ffh	;12	retlw	0ffh	retlw	0ffh	retlw	0ffh	retlw	0ffh	;16	retlw	0ffh	retlw	09h	retlw	05h	retlw	01h	;20	retlw	4bh	retlw	47h	retlw	43h	retlw	4ah	;24	retlw	46h	retlw	42h	retlw	41h	retlw	45h	;28	retlw	0ffh	retlw	0ffh	retlw	51h	retlw	5eh	;32	retlw	4fh	retlw	5ch	retlw	1ch	retlw	56h	;36	retlw	00h	retlw	02h	retlw	06h	retlw	12h	;40	retlw	0eh	retlw	52h	retlw	1ah	retlw	0dh	;44	retlw	0ah	retlw	44h	retlw	4dh	retlw	5dh	;48	retlw	4ch	retlw	06h	retlw	40h	retlw	58h	;52	retlw	5fh	retlw	48h	retlw	5ah	retlw	0fh	;56	retlw	4eh	retlw	14h	retlw	18h	retlw	54h	;60	retlw	03h	retlw	07h	retlw	0ffh	retlw	49h	;64	retlw	0bh	retlw	0ch	retlw	10h	retlw	50h	;68	retlw	55h	retlw	59h	retlw	0ffh	;EX8->TV/DVD	retlw	08h	;72	retlw	04h;----------------------------------------------------------convert_tv	ADDWF   PCL,1	retlw	18h	retlw	01h	retlw	0ffh	retlw	0ffh	;4	retlw	25h	retlw	1bh	retlw	0dh	retlw	1dh	;8	retlw	33h	retlw	2dh	retlw	0eh	retlw	29h	;12	retlw	35h	retlw	09h	retlw	36h	retlw	15h	;16	retlw	2bh	retlw	22h	retlw	12h	retlw	32h	;20	retlw	0ah	retlw	2ah	retlw	1ah	retlw	1eh	;24	retlw	06h	retlw	26h	retlw	02h	retlw	16h	;28	retlw	05h	retlw	24h	retlw	23h	retlw	0ffh	;32	retlw	0ffh	retlw	0ffh	retlw	0ffh	retlw	0ffh	;36	retlw	0ffh	retlw	0ffh	retlw	0ffh	retlw	0ffh	;40	retlw	0ffh	retlw	0ffh	retlw	0ffh	retlw	0ffh	;44	retlw	0ffh	retlw	0ffh	retlw	0ffh	retlw	0ffh	;48	retlw	0ffh	retlw	0ffh	retlw	0ffh	retlw	0ffh	;52	retlw	0ffh	retlw	0ffh	retlw	0ffh	retlw	18h	;56	retlw	14h	retlw	1ch	retlw	0ch	retlw	34h	;60	retlw	08h	retlw	20h	retlw	28h	retlw	0ffh	;64	retlw	0ffh	retlw	0ffh	retlw	0ffh	retlw	0ffh	;68	retlw	0ffh	retlw	0ffh	retlw	0ffh	;EX8->TV/DVD	retlw	0ffh	;72	retlw	0ffh;----------------------------------------------------------start;	btfsc	status,4;	GOTO    init;	goto	key_checkinit	clrf	rflagkey_check	clrwdt 	movlw	0ffh		;PB=in	tris	pb	movlw	00h	tris	pc		;pc=out	movlw	0ffh		;	movwf	pc	movlw	00h	tris	pa	movlw	08h	movwf	pa	clrf    rkeyc	clrf    rkey	clrf    rkeyt	bcf	rflag,b64	clrf	tmr0	movlw	07h		;tmr0/256	option	btfsc	pb,7	goto	key_ck01	btfsc	pb,7	goto	key_ck01	movlw	.73	movwf	rkey	goto	L_124key_ck01key_ck02	clrf	pc	clrf	pa	nop	nop	nop	movf	pb,0	movwf	rpb	bsf	pc,0	CALL    row_b0	BcF     pc,0	bsf	pc,1	CALL    row_b0	BcF     pc,1	bsf	pc,2	CALL    row_b0	BcF     pc,2	Bsf	pc,3	CALL    row_b0	BcF     pc,3	bsf	pc,4	CALL    row_b0	BcF     pc,4	bsf	pc,5	CALL    row_b0	BcF     pc,5	bsf	pc,6	CALL    row_b0	BcF     pc,6	bsf	pc,7	CALL    row_b0	BcF     pc,7	bsf	pa,3	CALL    row_b0	BcF     pa,3	clrf	pa	clrf	pc	MOVLW   0x1	SUBWF   rkeyc,0	BTFSS   STATUS,2	GOTO    sleep00L_124	movlw	.3		;TV key	xorwf	rkey,0	btfss	status,2	goto	key_01	btfsc	rflag,bkey	goto	wait01	bsf	rflag,bkey	bsf	rflag,btv	goto	wait01key_01	movlw	.4		;DVD key	xorwf	rkey,0	btfss	status,2	goto	key_02	btfsc	rflag,bkey	goto	wait01	bsf	rflag,bkey	bcf	rflag,btv	goto	wait01key_02	movlw	.71		;DVD/TV key	xorwf	rkey,0	btfss	status,2	goto	key_03	btfsc	rflag,bkey	goto	wait01	bsf	rflag,bkey	movlw	08h		;/btv	xorwf	rflag,1	goto	wait01wait01	btfss	rflag,btv	goto	wait02	bsf	pa,1		;TV led	goto	waitwait02	bsf	pa,2		;DVD led	goto	waitkey_03	btfss	rflag,btv	;TV mode	goto	key_dvd;----------------------------------------------------------; DATA HS3044 11bits; 1,NT,S2,S1,S0,D5,D4,D3,D2,D1,D0;----------------------------------------------------------key_tv	decf	rkey,0	call	convert_tv	movwf	rcode3	xorlw	0ffh	btfsc	status,2	goto	sleep00	bsf	pa,1		;TV led	clrf	rcode2		;change code	movlw	.6	movwf	rshifttv_01	rrf	rcode3,1	;rcode3: 0 1 2 3 4 5	rlf	rcode2,1	;rcode2: 5 4 3 2 1 0	decfsz	rshift,1	goto	tv_01	bsf	rcode2,7	;S2,S1,S0=1	bsf	rcode2,6	movlw	05h	movwf	rcode1	btfsc	rflag,bnt	bsf	rcode1,1	call	ir3044	movlw	.11	movwf	rshiftout_304401	btfsc	rcode1,2	call	delay3044h	call	delay3044	call	ir3044	rlf	rcode2,1	rlf	rcode1,1	decfsz	rshift,1	goto	out_304401	bsf	rflag,beff	call	delay3044	;delay10ms	call	delay3044	bsf	rflag,b64	bsf	rflag,bcode	goto	wait;----------------------------------------------------------; DATA 6122 32bits; C0-C7,C'0-C'7,D0-D7,/D0-/D7;----------------------------------------------------------key_dvd	decf	rkey,0	call	convert_dvd	movwf	rcode3	xorlw	0ffh	btfsc	status,2	goto	key_tv	bsf	pa,2		;DVD led	movlw	00h	movwf	rcode1	movlw	0ffh	movwf	rcode2	comf	rcode3,0	movwf	rcode4out_6122	clrf	rsub		;head 9ms(346pulse)	movlw	.90		;346*26=8996us	movwf	rtmpir9ms_2	CALL    ir01	DECFSZ  rtmp,1	GOTO    ir9ms_2	clrf	rtmpir9ms	CALL    ir01	DECFSZ  rtmp,1	GOTO    ir9ms	movlw	.173		;head space=4.5ms	btfsc	rflag,brep	movlw	.86		;repeat head space=2.236ms	movwf	rtmpwait4ms		nop	CALL    delay01	DECFSZ  rtmp,1	GOTO    wait4ms	call	irout	btfsc	rflag,brep	goto	wait	movlw	.32	movwf	rshiftout_ctl	rrf	rcode4,1	rrf	rcode3,1	rrf	rcode2,1	rrf	rcode1,1	btfsc	status,0	call	delayh	call	delay	call	irout	decfsz	rshift,1	goto	out_ctl	bsf	rflag,brep	bsf	rflag,b64;----------------------------------------------------------wait				;wait 108ms	clrwdt	movf	tmr0,0	btfsc	status,2	bsf	rflag,b64	movlw	.165	xorwf	tmr0,0	btfss	status,2	goto	wait	btfss	rflag,b64	goto	wait	bcf	rflag,b64	btfss	rflag,bcode	goto	key_check	bcf	rflag,bcode	call	delay3044	;delay28ms	call	delay3044	call	delay3044	call	delay3044	call	delay3044	call	delay3044h	call	delayh	goto	key_check;----------------------------------------------------------sleep00	btfss	rflag,beff	goto	sleep01	bcf	rflag,beff	btfss	rflag,bnt	goto	sleep02	bcf	rflag,bnt	goto	sleep01sleep02	bsf	rflag,bntsleep01	bcf	rflag,brep	bcf	rflag,bkey	MOVLW   0ffh	TRIS    pb	MOVLW   0	TRIS    pc	MOVLW   00h	MOVWF   pc	MOVLW   0	TRIS    pa	MOVLW   0	MOVWF   pa	nop	nop	SLEEP	nop	nop	goto	key_check   ;----------------------------------------------------------         END

⌨️ 快捷键说明

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