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

📄 rc5.asm

📁 Library for the 8051 microcontroller. such as math routine, hexBCD, LCD, Keyboard, I2C, Remote, Ke
💻 ASM
字号:
 ;-----------------------------------------------------------------------------------
 ;*                    Phillips RC5 Decoding
 ;*
 ;*         Author:  Ajay Bhargav
 ;*         Email:   contact@rickeyworld.info
 ;*         Website:	www.8051projects.net
 ;*
 ;*         Description: This software is for Phillips RC-5 remote
 ;*                decoding. Pin used for reception is P3.3 while
 ;*                you can use any pin as per your requiremnet.
 ;*                This program is written for 8051 MCU running 
 ;*                at 11.0592MHz.
 ;*
 ;*         Usage: After the decoding the Address is stored in the
 ;*                ADDR variable and command is stored in the CMD.
 ;*                The flip bit is also stored to check whether the
 ;*                button is pressed once or not.
 ;*
 ;*         Addon: Small sample program to control 8 switches with
 ;*                TV remote. 1 for Swith 1, 2 for switch 2,...
 ;*                and power button to swith off all switches at once
 ;*
 ;*                  Having a Doubts? Please post at
 ;*                  www.8051projects.net/forum.html
 ;*
 ;-----------------------------------------------------------------------------------

VAR1	equ r7                  ;Temporary Variable
TEMP	equ 10H		        ;Temp variable
COUNT	equ 11H		        ;Count
ADDR	equ 12H		        ;Device address
CMD	equ 13H 		;Command
FLIP	bit 00H		        ;Flip bit
TOG	bit 01H 	        ;Temp bit for flip
IR	equ P3.3	        ;IR Receiver connected to this pin
SW1	equ P1.0	        ;Switch 1 connected here
SW2	equ P1.1	        ;Switch 2 connected here
SW3	equ P1.2	        ;Switch 3 connected here
SW4	equ P1.3	        ;Switch 4 connected here
SW5	equ P1.4	        ;Switch 5 connected here
SW6	equ P1.5	        ;Switch 6 connected here
SW7	equ P1.6	        ;Switch 7 connected here
SW8	equ P1.7	        ;Switch 8 connected here
SWport	equ P1		        ;Port at which switches are connected
	
	org 00H			;Start of prog
	mov SWport,#00H ;switch all relays off!
	mov sp,#50H		;Stack pointer initialization
	clr TOG			;Clear temp bit
	
main:
	jb IR,$			;Wait for first bit
	mov VAR1,#255           ;3.024mS delay
	djnz VAR1,$
	mov VAR1,#255
	djnz VAR1,$
	mov VAR1,#255
	djnz VAR1,$
	mov VAR1,#255
	djnz VAR1,$
	mov VAR1,#255
	djnz VAR1,$
	mov VAR1,#100
	djnz VAR1,$
	mov c,IR		;Read Flip bit
	mov FLIP,c
	clr A
	mov COUNT,#5	        ;Count for address
fadd:
	mov VAR1,#255	        ;1.728mS delay for each bit
	djnz VAR1,$
	mov VAR1,#255
	djnz VAR1,$
	mov VAR1,#255
	djnz VAR1,$
	mov VAR1,#4
	djnz VAR1,$
	mov c,IR
	rlc a
	djnz COUNT,fadd
	mov ADDR,A		;Save the address
	clr a
	mov COUNT,#6	        ;Count for Command
fcmd:
	mov VAR1,#255	        ;1.728mS Delay for each bit
	djnz VAR1,$
	mov VAR1,#255
	djnz VAR1,$
	mov VAR1,#255
	djnz VAR1,$
	mov VAR1,#4
	djnz VAR1,$
	mov c,IR
	rlc a
	djnz COUNT,fcmd
	mov TEMP,CMD        	;Save the old command
	mov CMD,a		;Save the new command
	mov a,ADDR		;Cheack for valid address
	cjne a,#00,nvalid
	mov a,TEMP
	cjne a,CMD,valid	;Check for valid command
nvalid:
	ljmp main
valid:				;Key press check
	clr a
	mov c,FLIP
	rlc a
	mov TEMP,a
	clr a
	mov c,TOG
	rlc a
	cjne a,TEMP,valid1
	sjmp nvalid
valid1:
	mov c,FLIP
	mov TOG,c
	mov a,CMD
	clr c
	cjne a,#1,skip1		;Check for SW1
	jb SW1,isset1
	setb SW1
	ljmp main
isset1:
	clr SW1
	ljmp main
skip1:
	cjne a,#2,skip2		;Check for SW2
	jb SW2,isset2
	setb SW2
	ljmp main
isset2:
	clr SW2
	ljmp main
skip2:
	cjne a,#3,skip3		;Check for SW3
	jb SW3,isset3
	setb SW3
	ljmp main
isset3:
	clr SW3
	ljmp main
skip3:
	cjne a,#4,skip4		;Check for SW4
	jb SW4,isset4
	setb SW4
	ljmp main
isset4:
	clr SW4
	ljmp main
skip4:
	cjne a,#5,skip5		;Check for SW5
	jb SW5,isset5
	setb SW5
	ljmp main
isset5:
	clr SW5
	ljmp main
skip5:
	cjne a,#6,skip6		;Check for SW6
	jb SW6,isset6
	setb SW6
	ljmp main
isset6:
	clr SW6
	ljmp main
skip6:
	cjne a,#7,skip7		;Check for SW7
	jb SW7,isset7
	setb SW7
	ljmp main
isset7:
	clr SW7
	ljmp main
skip7:
	cjne a,#8,skip8		;Check for SW8
	jb SW8,isset8
	setb SW8
	ljmp main
isset8:
	clr SW8
	ljmp main
skip8:
	cjne a,#0CH,exit	;Check for all switches
	mov SWport,#00H
	ljmp main
exit:
	ljmp main

	END			;End of program

⌨️ 快捷键说明

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