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

📄 mouse.asm

📁 verilog high discriptive language
💻 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 and controlling your pc with the help of
 *                a tv remote. 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.
 *
 *
 *                  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
TEMP1	equ 14H                 ;Temporary Variable 1
FLIP	bit 00H		        ;Flip bit
TOG	bit 01H 	        ;Temp bit for flip
MODE	bit 02H                 ;Mouse mode/Keyboard mode default:mouse
VALID	bit 03H                 ;Valid bit
IR	equ P3.3	        ;IR Receiver connected to this pin
	
	org 00H			;Start of prog
	clr a
	mov r0,#7FH
clrram:                         ;Clearing Internal RAM
	mov @r0,a
	djnz r0,clrram
	mov sp,#50H             ;Stack Pointer setup
	mov TMOD,#20H           ;Serial port setup
	mov SCON,#50H           ;Receive enable
	mov TH1,#0FDH           ;9600, 8-N-1
	mov TL1,#0FDH
	clr TOG                 ;clear temp bit
	clr MODE                ;Set the default mode
	setb TR1                ;Start serial clock
	
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
	jb MODE,key             ;Use mouse mode if Mode bit is 0
	acall mouse
	ljmp main
key:                            ;or keyboard mode if Mode bit is 1
	acall keyboard
nvalid:
	ljmp main

mouse:                          ;Routine for Mouse operation
	mov a,CMD
	cjne a,#0CH,mskip
	mov a,TEMP
	cjne a,CMD,m_valid
	ret
m_valid:
	clr a
	mov c,FLIP
	rlc a
	mov TEMP1,a
	clr a
	mov c,TOG
	rlc a
	cjne a,TEMP1,m_valid1
	ret
m_valid1:
	mov c,FLIP
	mov TOG,c
	mov a,CMD
	cjne a,#0CH,mskip
	mov a,#30H
	acall tx
	jnb RI,$
	clr RI
	mov a,SBUF
	cjne a,#'m',keymode
	clr MODE
	ret
keymode:
	setb MODE
	ret

mskip:
	cjne a,#01H,mskip1
	acall chk_valid
	jb VALID,ok1
	ret
ok1:
	mov a,#31H
	acall tx
	ret

mskip1:
	cjne a,#02H,mskip2
	mov a,#32H
	acall tx
	ret

mskip2:
	cjne a,#03H,mskip3
	acall chk_valid
	jb VALID,ok2
	ret
ok2:
	mov a,#33H
	acall tx
	ret

mskip3:
	cjne a,#04H,mskip4
	mov a,#34H
	acall tx
	ret

mskip4:
	cjne a,#05H,mskip5
	mov a,#35H
	acall tx
	ret

mskip5:
	cjne a,#06H,mskip6
	mov a,#36H
	acall tx
	ret

mskip6:
	cjne a,#26H,mskip7
	mov a,#37H
	acall tx
	ret

mskip7:
	cjne a,#38H,mskip8
	mov a,#38H
	acall tx
	ret
mskip8:
	cjne a,#10H,mskip9
	mov a,#37H
	acall tx
	ret
mskip9:
	cjne a,#11H,mskip10
	mov a,#38H
	acall tx
mskip10:
	ret


chk_valid:
	mov a,TEMP
	cjne a,CMD,ms_valid1
	ret
ms_valid1:
	clr a
	mov c,FLIP
	rlc a
	mov TEMP1,a
	clr a
	mov c,TOG
	rlc a
	cjne a,TEMP1,ms_valid
	clr VALID
	ret
ms_valid:
	mov c,FLIP
	mov TOG,c
	setb VALID
	ret	



keyboard:				;Routine for Keyboard operation
	mov a,TEMP
	cjne a,CMD,k_valid1
	ret
k_valid1:
	clr a
	mov c,FLIP
	rlc a
	mov TEMP1,a
	clr a
	mov c,TOG
	rlc a
	cjne a,TEMP1,k_valid
	ret
k_valid:
	mov c,FLIP
	mov TOG,c
	mov a,CMD
	clr c
	cjne a,#7,chk
chk:
	jnc greater
	add a,#30H
	acall tx
	ret
greater:
	cjne a,#0CH,next
	mov a,#30H
	acall tx
	jnb RI,$
	clr RI
	mov a,SBUF
	cjne a,#'m',keymode1
	clr MODE
	ret
keymode1:
	setb MODE
	ret

next:
	cjne a,#26H,next1
	mov a,#37H
	acall tx
	ret
next1:
	cjne a,#38H,next2
	mov a,#38H
	acall tx
	ret
next2:
	cjne a,#10H,next3
	mov a,#37H
	acall tx
	ret
next3:
	cjne a,#11H,next4
	mov a,#38H
	acall tx
	ret
next4:
	cjne a,#20H,next5
	mov a,#36H
	acall tx
	ret
next5:
	cjne a,#21H,next6
	mov a,#35H
	acall tx
	ret
next6:
	cjne a,#0DH,next7
	mov a,#39H
	acall tx
next7:
	ret


tx:				;Serial Transmit
	mov sbuf,a
	jnb TI,$
	clr TI
	ret

	END

⌨️ 快捷键说明

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