亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ir_uart.asm

?? 用2051紅外進行收發(fā)的程序
?? ASM
?? 第 1 頁 / 共 3 頁
字號:
				MOV		g_IR_HEAD3,A				;
				MOV		A,g_BIT1_NUM				;
				CJNE	A,B,IR_MOUSE_ERR			; 計算1的個數是否正確
				MOV		g_IR_HEAD1,#c_IR_MOUSE		; 紅外鼠標 導引頭
				ACALL	OUT_IR_DATA					; 送出數據
				AJMP	IRDA_RETI					;
IR_MOUSE_ERR:	AJMP	INT_IRDA_ERR				; 錯誤處理中繼站
;┌───────┬───────────────-┐;
;│IR_BIT4		 │紅外鼠標處理					  │;
;└───────┴───────────────-┘;
IR_BIT4:		MOV		R3,#4						; 紅外鍵盤普通鍵處理
				MOV		B,#0						;
IR_BIT4_PAR:	ACALL	IR_CLK						; 產生一個CLK
				JB		F0,IR_BIT4_RET				;
				ACALL	READ_IRKB_BIT				;
				JB		F0,IR_BIT4_RET				;
				MOV		A,B							; 暫存B
				RRC		A							;
				MOV		B,A							; 暫存B
				DJNZ	R3,IR_BIT4_PAR				; 4個bit 1的個數
				SWAP	A							; 高低位互換 因為接收的高四位才是1的個數
				MOV		B,A							; 暫存B
IR_BIT4_RET:	RET									;
;┌───────┬───────────────-┐;
;│READ_YKQ_BYTE │讀取遙控器一個字節(jié)數據		  │;
;└───────┴───────────────-┘;
READ_YKQ_BYTE:	MOV		R4,#8						; 接收一個字節(jié)8位
READ_YKQ_DATA:	ACALL	IR_CLK						; 產生一個CLK
				JB		F0,YKQ_DATA_ERR				;
				ACALL	READ_YKQ_BIT				; 讀取一個BIT
				JB		F0,YKQ_DATA_ERR				; 接收一個BIT是否正確 壓縮求值
				MOV		A,g_IR_DATA					;
				RRC		A							; 右移一位
				MOV		g_IR_DATA,A					;
				DJNZ	R4,READ_YKQ_DATA			;
YKQ_DATA_ERR:	RET									; 返回時通過F0來表示正確與否
;┌───────┬───────────────-┐;
;│READ_IRKB_BYTE│讀取紅外鍵盤一個字節(jié)數據		  │;
;└───────┴───────────────-┘;
READ_IRKB_BYTE:	MOV		R4,#8						; 接收一個字節(jié)8位
READ_IRKB_DATA:	ACALL	IR_CLK						; 產生一個CLK
				JB		F0,IRKB_DATA_ERR			;
				ACALL	READ_IRKB_BIT				; 讀取一個BIT
				JB		F0,IRKB_DATA_ERR			; 接收一個BIT是否正確 壓縮求值
				MOV		A,g_IR_DATA					;
				RRC		A							; 右移一位
				MOV		g_IR_DATA,A					;
				DJNZ	R4,READ_IRKB_DATA			;
IRKB_DATA_ERR:	RET									; 錯誤返回
;┌───────┬───────────────-┐;
;│READ_YKQ_BIT │讀取遙控器一個BIT			  │;
;└───────┴───────────────-┘;
READ_YKQ_BIT:	SETB	F0							; 錯誤標志
				CLR		C							; 清除 C 防止以前留下的	C=1
				MOV		A,g_IR_TMER					; 和最小的比
				SUBB	A,#c_YKQ_BIT1_E				; 先要掐頭
				JC		YKQ_BIT_ERR					; C=1 說明 A<c_YKQ_BIT1_E 比最小的還要小 ERR
				MOV		A,g_IR_TMER					; 和最大的比
				SUBB	A,#c_YKQ_BIT0_S				; 去尾	  增加一個一樣大的
				JNC		YKQ_BIT_ERR					; C=0 說明 A>c_YKQ_BIT0_E 比最大的還要大 ERR
				MOV		A,g_IR_TMER					; 和BIT1比較
				SUBB	A,#c_YKQ_BIT1_S				; 和c_YKQ_BIT1_S 比小
				JC		YKQ_BIT_1					; C=1 說明 c_YKQ_BIT1_E<A<c_YKQ_BIT1_S 是BIT1
				MOV		A,g_IR_TMER					; C=0 說明 A>c_YKQ_BIT1_S 還要和BIT0比較
				SUBB	A,#c_YKQ_BIT0_E				; 和c_YKQ_BIT0_E 比大  包括一樣大
				JNC		YKQ_BIT_0					; C=0 說明 c_YKQ_BIT0_E<A<c_YKQ_BIT0_S 是BIT0  C=1 說明	c_YKQ_BIT1_S<A<c_YKQ_BIT0_E	ERR
				RET									; 在 BIT1 和 BIT0 的之間的數值 可以濾掉	也可以保留 c_YKQ_BIT1_S<A<c_YKQ_BIT0_E
YKQ_BIT_1:		SETB	C							; BIT1通過C傳遞	C=1
YKQ_BIT_0:		CLR		F0							; 處理正確 清除	錯誤標志 并且C=0  通過C傳遞 BIT0
YKQ_BIT_ERR:	RET									; BIT0通過C傳遞	C=0	默認
;┌───────┬───────────────-┐;
;│READ_IRKB_BIT │讀取紅外鍵盤一個BIT			  │;
;└───────┴───────────────-┘;
READ_IRKB_BIT:	SETB	F0							; 錯誤標志
				CLR		C							; 清除 C 防止以前留下的	C=1
				MOV		A,g_IR_TMER					; 和最小的比
				SUBB	A,#c_IRKB_BIT1_E			; 先要掐頭
				JC		IRKB_BIT_ERR				; C=1 說明 比最小的還要小 ERR
				MOV		A,g_IR_TMER					; 和最大的比
				SUBB	A,#c_IRKB_BIT0_S			; 去尾	 增加一個一樣大的
				JNC		IRKB_BIT_ERR				; C=0 說明 比最大的還要大 ERR 還有一個剛好夠減的情況
				MOV		A,g_IR_TMER					; 和BIT1比較
				SUBB	A,#c_IRKB_BIT1_S			; 和c_YKQ_BIT1_S 比小
				JC		IRKB_BIT_1					; C=1 說明 c_YKQ_BIT1_E<A<c_YKQ_BIT1_S 是BIT1
				MOV		A,g_IR_TMER					; C=0 說明 A>c_YKQ_BIT1_S 還要和BIT0比較
				SUBB	A,#c_IRKB_BIT0_E			; 和c_YKQ_BIT1_E 比大 包括一樣大
				JNC		IRKB_BIT_0					; C=0 說明 c_YKQ_BIT0_E<A<c_YKQ_BIT0_S 是BIT0  C=1 說明比c_YKQ_BIT1_E 小 ERR
				RET									; 在 BIT1 和 BIT0 的之間的數值 可以濾掉	也可以保留
IRKB_BIT_1:		SETB	C							; BIT1通過C傳遞	C=1
				INC		g_BIT1_NUM					; 1	的個數計數器加一
IRKB_BIT_0:		CLR		F0							; 處理正確 清除	錯誤標志 并且C=0  通過C傳遞 BIT0
IRKB_BIT_ERR:	RET									; BIT0通過C傳遞	C=0	默認
;┌───────┬───────────────-┐;
;│IR_HEAD		 │紅外導引頭判斷  			  │;
;└───────┴───────────────-┘;
IR_HEAD:		SETB	F0							; 錯誤標志
				CLR		f_YKQ						;
				CLR		f_YKQ_ACK					;
				CLR		f_IR_KB						;
				CLR		f_IR_EKB					;
				CLR		f_IR_MOUSE					;
				MOV		A,g_IR_TMER					; 照樣掐頭去尾
				SUBB	A,#c_YKQ_HEAD_E				; 和最小的比  包含一個相等的
				JC		IR_HEAD_ERR					; C=1 說明 比最小的還要小 ERR
				MOV		A,g_IR_TMER					; 和最大的比
				SUBB	A,#c_IRMS_HEAD_S			; 去尾
				JNC		IR_HEAD_ERR					; C=0 說明 比最大的還要大 ERR 還有一個相等的
				MOV		A,g_IR_TMER					; 判斷是遙控器還是遙控鍵盤
				SUBB	A,#c_YKQ_ACK_S				;
				JC		YKQ_HEAD					; C=1 是遙控器 C=0還要判斷
				MOV		A,g_IR_TMER					;
				SUBB	A,#c_IREK_HEAD_E			; 先判斷錯誤 會不會比最小的還要小
				JC		IR_HEAD_ERR					; C=1 說明不夠減 即比c_IRMS_HEAD_E小 不在遙控鍵盤范圍
				MOV		A,g_IR_TMER					;
				SUBB	A,#c_IREK_HEAD_S			; 判斷鍵盤還是鼠標
				JNC		IRKB_HEAD					; C=0 是紅外鍵盤
				SETB	f_IR_EKB					; C=1 (包括剛好夠減) 紅外鼠標
				AJMP	IR_HEAD_RET					; 置標志位
IRKB_HEAD:		MOV		A,g_IR_TMER					; 判斷是擴展鍵還是普通鍵
				SUBB	A,#c_IRKB_HEAD_S			;
				JNC		IREKB_HEAD					; C=0 比大的還大 ERR
				SETB	f_IR_KB						;
				AJMP	IR_HEAD_RET					;
IREKB_HEAD:		MOV		A,g_IR_TMER					;
				SUBB	A,#c_IRMS_HEAD_E			;
				JC		IR_HEAD_ERR					;
				SETB	f_IR_MOUSE					;
				AJMP	IR_HEAD_RET					;
YKQ_HEAD:		MOV		A,g_IR_TMER					; 遙控器頭判斷
				SUBB	A,#c_YKQ_HEAD_S				; 判斷遙控器
				JNC		YKQ_ACK_HEAD				; C=0 說明夠減 比c_YKQ_HEAD_S大	還有一種等于的 是 ACK
				SETB	f_YKQ						; C=1 說明是遙控器 不夠減  比c_YKQ_HEAD_S小
				AJMP	IR_HEAD_RET					;
YKQ_ACK_HEAD:	MOV		A,g_IR_TMER					;
				SUBB	A,#c_YKQ_ACK_E				; 和c_YKQ_ACK_E比大
				JC		IR_HEAD_ERR					; C=1 說明不夠減 比	c_YKQ_ACK_E小 err
				SETB	f_YKQ_ACK					; C=0 說明夠減 比 c_YKQ_ACK_E大
IR_HEAD_RET:	CLR		F0							; 正確判斷 清除標志位
IR_HEAD_ERR:	RET									;
;┌───────┬───────────────-┐;
;│IR_CLK		 │等待一個紅外時鐘  			  │;
;└───────┴───────────────-┘;
IR_CLK:			SETB	F0							; 錯誤標志
IR_CLK_UP:		JB		f_IR_CLK,IR_CLK_DOWN		; 等待時鐘為1
				JNB		f_IR_TIME_OVER,IR_CLK_UP	; 判斷 時間溢出
				RET									; 時間溢出 F0=1	時間溢出
IR_CLK_DOWN:	JNB		f_IR_CLK,IR_CLK_RET			; 等待時鐘為0
				JNB		f_IR_TIME_OVER,IR_CLK_DOWN	; 判斷 時間溢出
				RET									; 時間溢出 F0=1	時間溢出
IR_CLK_RET:		MOV		g_IR_TMER,g_IR_TMER_DOG		; 傳送本次計時數據
				MOV		g_IR_TMER_DOG,#0			; 計時看門狗清零 進行下一個CLK計時
				CLR		F0							; 正確 清除錯誤標志
				RET									; 處理結束	F0=1 時間溢出
;┌───────┬───────────────-┐;
;│OUT_IR_DATA	 │紅外數據壓入數據緩沖區(qū)		  │;
;└───────┴───────────────-┘;
OUT_IR_DATA:	MOV		R0,g_DATA_SP_E				; 取緩沖區(qū)指針
				MOV		@R0,g_IR_HEAD1				; 送數據
				INC		R0							; 緩沖區(qū)指針加一
				MOV		@R0,g_IR_HEAD2				; 送數據
				INC		R0							;
				MOV		@R0,g_IR_HEAD3				;
				INC		R0							;
				MOV		g_DATA_SP_E,R0				; 保存指針
				SETB	f_DATA						; 申請輸出數據
				RET									;
;***************************************************;
;┌─────┬─────────────────-┐;
;│IR_INI	 │遙控參數初始化程序				  │;
;├─────┼─────────────────-┤;
;│入口參數: │f_IR_IN=1						  │;
;└─────┴─────────────────-┘;
IR_INI:			CLR		IE0							; 清除紅外中斷
				SETB	TR1							; 開定時器1
				SETB	ET1							; 允許定時器1中斷
				SETB	EX0							; 允許外部中斷0中斷
				SETB	f_IR_CLK					; 置一輸入
				RET									;
;***************************************************;
;┌─────┬─────────────────-┐;
;│MYMCU	 │設置單片機的寄存器參數程序		  │;
;├─────┼─────────────────-┤;
;│入口參數: │上電初始化,電源控制				  │;
;├─────┼─────────────────-┤;
;│影響資源: │SFR								  │;
;└─────┴─────────────────-┘;
MYMCU:			MOV		TMOD,#c_TMOD				; T1編程為方式2定時狀態(tài),T0編程為方式3定時狀態(tài)
				MOV		SCON,#c_SCON				; 串口方式 模式1  數據位8 停止位1
				MOV		PCON,#c_PCON				; 波特率加倍
				MOV		TL0,#c_TMER0L				; 定時器0 初值 工作在方式 3	計數方式
				MOV		TH0,#c_TMER0H				; 定時器0 另外一個8位定時器	初值 用TMER1中斷
				MOV		TL1,#c_TMER1L				; 賦初值
				MOV		TH1,#c_TMER1H				; 波特率=19200,誤差0(	f =11.0592MHz)
				SETB	IT0							; 選擇外部中斷 0 工作方式:負邊沿觸發(fā)方式
				SETB	IT1							; 選擇外部中斷 1 工作方式:負邊沿觸發(fā)方式
				CLR		TR0							; 關閉定時0
;				CLR		TR1							; 開串口波特率
				CLR		EX0							; 不允許	外部 0 中斷
				CLR		ET0							; 不允許	定時 0 中斷
				CLR		EX1							; 不允許	外部 1 中斷
;				CLR		ET1							; 不允許	定時 1 中斷	串口波特率
;				CLR		ES							; 不允許	串口   中斷
;				CLR		PX0							; 設置 INT0	中斷的優(yōu)先級別 最高	紅外
;				CLR		PT0							; 設置 定時0中斷的優(yōu)先級別 最高	鼠標
;				CLR		PX1							; 設置 INT1	中斷的優(yōu)先級別 最高	鍵盤
				SETB	PT1							; 設置 定時1中斷的優(yōu)先級別 最高	系統時鐘
;				CLR		PS							; 設置 串口	中斷的優(yōu)先級別 最高
				CLR		TF0							; 清除鼠標中斷
				CLR		TF1							; 清除定時器1
				CLR		IE1							; 清除鍵盤中斷標志位
				CLR		IE0							; 清除紅外中斷
				CLR		RI							; 串口接收中斷
				SETB	EA							; 開啟總中斷
				RET									;
;***************************************************;
;┌─────┬─────────────────-┐;
;│	DELAY	 │軟件延時程序						  │;
;├─────┼─────────────────-┤;
;│影響資源: │R5,R6,R7,g_INT_TMER_MS			  │;
;└─────┴─────────────────-┘;
INT_DELAY20MS:	MOV		R7,#20						;
INT_DEL20MS:	ACALL	INT_DELAY1MS				;
				DJNZ	R7,INT_DEL20MS				;
				RET									;
INI_DELAY3MS:	MOV		R6,#3						;
INI_DEL3MS:		ACALL	INI_DELAY1MS				;
				DJNZ	R6,INI_DEL3MS				;
				RET									;
INT_DELAY3MS:	MOV		R5,#3						;
INT_DEL3MS:		ACALL	INT_DELAY1MS				;
				DJNZ	R5,INT_DEL3MS				;
				RET									;
INT_DELAY1MS:	MOV		g_INT_TMER_MS,#0E5H			; 中斷中的延時 1ms 計數值  晶振	11.0592MHZ
				NOP									;
				NOP									;
				DJNZ	g_INT_TMER_MS,$-2			; 延時 4.4uS
				RET									; 用了一個 R6	進行參數傳遞
INI_DELAY1MS:	MOV		g_INI_TMER_MS,#0E5H			; 初始化主程序中的延時 1ms 計數值 晶振	11.0592MHZ
				NOP									;
				NOP									;
				DJNZ	g_INI_TMER_MS,$-2			; 延時 "R6"ms
				RET									; 用了一個 R6	進行參數傳遞
DELAY100US:		MOV		g_TMER_US,#040H				; 延時 100Us 計數值	 晶振	11.0592MHZ 指令周期	1.1US
				DJNZ	g_TMER_US,$					; 延時 "g_TMER_US"Us
				RET									;
;***************************************************;
;				ORG		7FDH						; 最后兩個字節(jié)
;				LJMP	MAIN						; 最后一條指令
END													; 代碼結束
;***************************************************;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产sm捆绑调教视频| 成人激情校园春色| 国产91色综合久久免费分享| 欧美伊人久久久久久久久影院| 久久尤物电影视频在线观看| 亚洲猫色日本管| 国产精品91xxx| 欧美精品粉嫩高潮一区二区| 亚洲欧美aⅴ...| 成人午夜视频在线观看| 精品国产乱码久久久久久老虎| 一区二区成人在线观看| 丰满白嫩尤物一区二区| 日韩视频一区二区三区在线播放| 亚洲美女区一区| 色哟哟在线观看一区二区三区| 久久综合成人精品亚洲另类欧美 | 亚洲一区在线观看网站| 国产99一区视频免费| 日韩精品中文字幕在线一区| 亚洲电影第三页| 在线观看成人免费视频| 中文字幕亚洲精品在线观看 | 国产午夜精品久久| 日本网站在线观看一区二区三区| 色999日韩国产欧美一区二区| 国产精品全国免费观看高清 | 久久免费视频色| 精油按摩中文字幕久久| 欧美一区二区视频免费观看| 日本亚洲免费观看| 欧美一级高清大全免费观看| 日本中文一区二区三区| 日韩欧美卡一卡二| 人妖欧美一区二区| 精品国产百合女同互慰| 国产一区二区成人久久免费影院| 26uuu另类欧美| 高清免费成人av| 1024成人网| 欧美亚洲愉拍一区二区| 亚洲高清三级视频| 日韩一级二级三级| 久久国产综合精品| 久久久高清一区二区三区| 成人国产精品免费观看| 成人免费在线视频观看| 在线视频一区二区三区| 日本麻豆一区二区三区视频| 久久伊人中文字幕| 9人人澡人人爽人人精品| 亚洲综合在线观看视频| 欧美精品乱码久久久久久按摩| 蜜桃91丨九色丨蝌蚪91桃色| 久久久久久久精| 99久久久久久| 天堂午夜影视日韩欧美一区二区| 欧美日韩国产美女| 国产综合久久久久影院| 综合婷婷亚洲小说| 欧美一区二视频| 国产成人免费视频网站| 一个色综合av| 久久你懂得1024| 欧美在线免费播放| 国产老肥熟一区二区三区| 亚洲精品videosex极品| 精品国产在天天线2019| 99国内精品久久| 麻豆精品一区二区| 亚洲男同性视频| 久久午夜老司机| 欧美三级韩国三级日本一级| 国产99精品在线观看| 丝袜脚交一区二区| 成人欧美一区二区三区在线播放| 欧美一区二区免费观在线| youjizz久久| 精品一区二区三区的国产在线播放| 国产精品美日韩| 欧美成人猛片aaaaaaa| 91国偷自产一区二区三区成为亚洲经典 | 欧美在线|欧美| 国产精品一区二区视频| 天天影视涩香欲综合网| 亚洲天堂精品视频| 国产午夜亚洲精品理论片色戒 | 欧美三级日韩三级| 成人精品视频一区| 韩国精品一区二区| 亚洲 欧美综合在线网络| 国产精品美女久久久久aⅴ| 精品久久久久久久久久久久包黑料 | 国产麻豆91精品| 视频在线观看91| 亚洲图片有声小说| 中文字幕五月欧美| 中文字幕不卡的av| 2021国产精品久久精品| 欧美一区二区日韩| 91精品国产色综合久久久蜜香臀| av电影一区二区| 成人精品在线视频观看| 国产一区二区三区观看| 久久99久久99小草精品免视看| 水野朝阳av一区二区三区| 亚洲国产一二三| 亚洲精品免费电影| 亚洲久草在线视频| 亚洲精品日日夜夜| 一区二区日韩av| 一个色综合网站| 一级做a爱片久久| 亚洲午夜精品久久久久久久久| 一区二区三区蜜桃| 偷拍一区二区三区四区| 婷婷成人激情在线网| 日本免费新一区视频| 日本人妖一区二区| 麻豆国产91在线播放| 蜜桃精品在线观看| 国产精品一区二区男女羞羞无遮挡| 黄色日韩网站视频| 国产精品一二三四| 99精品久久免费看蜜臀剧情介绍| 成人天堂资源www在线| 99久久精品99国产精品 | 精品福利一区二区三区免费视频| 2021中文字幕一区亚洲| 国产日产欧美一区二区视频| 国产欧美一区二区精品性| 国产精品久久久久久亚洲毛片| 亚洲日本欧美天堂| 一区二区三区欧美视频| 蜜桃免费网站一区二区三区| 国产精品自拍网站| 92精品国产成人观看免费| 欧美性三三影院| 精品精品国产高清a毛片牛牛| 久久久av毛片精品| 亚洲女同一区二区| 麻豆91精品91久久久的内涵| 成人综合婷婷国产精品久久免费| 91在线视频观看| 91精品国产黑色紧身裤美女| 久久精品一二三| 亚洲一二三四在线| 国产精品主播直播| 欧美性生活影院| 国产午夜精品一区二区三区视频| 亚洲三级电影网站| 久久国产精品一区二区| 99久久精品99国产精品| 91精选在线观看| 国产精品网曝门| 日韩精品1区2区3区| 丰满岳乱妇一区二区三区| 欧美女孩性生活视频| 中文字幕av一区二区三区免费看| 午夜精品久久久久久久99樱桃| 精品一二线国产| 色婷婷精品大在线视频| 久久综合九色综合欧美98| 亚洲国产精品一区二区久久| 国产成人福利片| 日韩亚洲欧美成人一区| 一区二区三区不卡在线观看| 国产成人精品一区二区三区网站观看 | 日韩欧美一区二区视频| 亚洲免费观看高清完整版在线| 国产在线精品视频| 欧美一区二区三区男人的天堂| 亚洲婷婷综合久久一本伊一区 | 国产亚洲一区二区三区在线观看 | 国产一区二区不卡| 欧美一区二区三区四区久久| 亚洲图片激情小说| 成人国产视频在线观看| 国产视频一区二区三区在线观看| 婷婷综合久久一区二区三区| 色婷婷综合久久久久中文| 欧美激情一区二区三区在线| 久久精品久久99精品久久| 在线不卡的av| 亚洲国产cao| 欧洲人成人精品| 亚洲免费在线视频| 色综合色综合色综合色综合色综合| 欧美高清在线视频| 国产成人av福利| 日本一区二区综合亚洲| 国产美女视频91| 国产喷白浆一区二区三区| 久久丁香综合五月国产三级网站| 欧美精品粉嫩高潮一区二区| 性做久久久久久久免费看| 欧美视频在线播放| 亚洲国产毛片aaaaa无费看| 欧美综合久久久| 亚洲成国产人片在线观看|