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

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

?? ir_uart.asm

?? 用2051紅外進行收發的程序
?? ASM
?? 第 1 頁 / 共 3 頁
字號:
;*******************************************************************************************
; 文件名: IR_UART.ASM																	   *
; 創建人: 邱作霖  創建時間 : 2005.10.1													   *
; 修改人: 邱作霖  修改時間 : 2005.10.1													   *
; 功能	: 接收紅外鍵盤\鼠標數據	 上位機通訊 送出數據 紅外學習、紅外發射     			   *
; 版權	: 																				   *
;*******************************************************************************************
; IR_UART.asm										; 文件名
; IR1.0												; 版本
INCLUDE	"MAIN.H"									; 包含文件 偉福自定義包含文件
;$INCLUDE (MAIN.H)									; 包含文件 COMP51定義包含文件
; 代碼開始											;┌──────────────────┐
				ORG		0000H						;│代碼段開始地址					   │
				LJMP	MAIN						;│									   │
				ORG		0003H						;│外部中斷0 入口: IE0	紅外通訊	   │
				LJMP	INT_IRDA					;│									   │
				DB		32H							;│防止	程序調入 中斷向量地址, 清零	   │
				ORG		000BH						;│定時器 T0 中斷入口地址  32H = RETI  │
				DB		32H							;│將 不使用的 中斷地址	 清零		   │
				ORG		0013H						;│外部中斷1 入口: IE1	鍵盤通訊	   │
				DB		32H							;│防止	程序調入 中斷向量地址, 清零	   │
				ORG		001BH						;│定時器 T1 中斷入口地址			   │
				LJMP	INT_TMER1					;│定時器 T1 中斷入口地址			   │
				DB		32H							;│									   │
;				ORG		0023H						;│串口	中斷入口地址				   │
;				LJMP	INT_UART					;│串口	中斷入口地址				   │
;				DB		00H,00H,00H,00H,32H			;│									   │
;***************************************************;└──────────────────┘
; 程序開始											;
MAIN:			ACALL	MYMCU						; 設置單片機的參數
				MOV		R0,#7FH						; 清零前 RAM	128	字節
				MOV		@R0,#00H					; 00H-7FH
				DJNZ	R0,$-2						; 清理 殘留的數據,在熱啟動時有用 一般在軟開機
				CLR   	f_IR_OUT                    ; 置0 紅外發射
				CLR   	f_LED1                      ; LED滅
				CLR   	f_LED2                      ; LED滅
				CLR   	f_LED3                      ; LED滅
				CLR   	f_LED4                      ; LED滅
;***************************************************;
; 系統資源初始化									;
SYSTEM:			MOV		SP,#c_SYSTEM_SP				; 設置堆棧
				MOV		g_DATA_SP_E,#c_DATA_SP_S	; 送數據緩沖區片內數據 RAM 指針	初始值
				MOV		g_WINK_TMER,#255			; LED閃爍時間計數器	初值 大概255*60us
				MOV		g_WINK_TMER1,#2				; LED閃爍次數計數器	初值 閃兩次
				MOV		g_IR_TMER_DOG1,#c_TMER_OVER	;
				ACALL	IR_INI						; 紅外復位子程序
				SETB	EA							; 開啟總中斷
;***************************************************;
; 主循環	優先級從上到下減小						;
MAIN_LOOP:		JB		f_DATA,TASK1				; 單片機是否有數據要上傳給CPU
				JB		RI,TASK2					; 是否收到串口數據
				SETB	EX0							; 允許	外部 0 中斷 實時設置中斷,防止中斷被屏蔽。紅外通訊
LOOP:			AJMP	MAIN_LOOP					; 循環結束
; 主循環結束										;
;***************************************************;
; 任務表											; 優先級從上到下減小
TASK1:			AJMP	DATA_OUT					; 鍵盤鼠標數據緩沖區滿 使用模擬串口送給上位機cpu19200
TASK2:			AJMP	UART_RXD					; 接收到上位機CPU數據	處理	19200
; 任務表結束										; 任務表結束
;***************************************************;
;┌─────┬─────────────────-┐;
;│DATA_OUT	 │送出緩沖區數據					  │;
;├─────┼─────────────────-┤;
;│入口參數: │f_DATA=1						  │;
;├─────┼─────────────────-┤;
;│出口參數: │									  │;
;├─────┼─────────────────-┤;
;│影響資源: │A,R1,g_DATA_SP_E				  │;
;└─────┴─────────────────-┘;
DATA_OUT:		ACALL	DATA_TXD					; TASK1	 送出數據
				CLR		f_DATA						; 處理完畢
				AJMP	MAIN_LOOP					; 退出
;┌─────┬─────────────────-┐;
;│DATA_TXD	 │	清緩沖區						  │;
;└─────┴─────────────────-┘;
DATA_TXD:		MOV		R1,#c_DATA_SP_S				; 送數據緩沖區片內數據 RAM 指針	初始值
DATA_TXD_LOOP:	MOV		A,R1						;
				CJNE	A,g_DATA_SP_E,DATA_TXD_BYTE	; 判斷是否棧底 不是就送出數據
				SETB	f_LED_WINK					; 申請LED 閃爍
DATA_TXD_RET:	MOV		g_DATA_SP_E,#c_DATA_SP_S	; 送數據緩沖區片內數據 RAM 指針	初始值
				RET									;
DATA_TXD_BYTE:	MOV		A,@R1						; 取數據 間接尋址
				ACALL	UART_TXD					;
				INC		R1							; 調整指針
				AJMP	DATA_TXD_LOOP				; 繼續送出數據
;┌─────┬─────────────────-┐;
;│UART_TXD	 │	從串口送出數據					  │;
;└─────┴─────────────────-┘;
UART_TXD:		CLR		TI							; 冗余指令 防止	以前的TI沒有清除 TI中斷需要軟件清除
				MOV		SBUF,A						; 串口送出數據
				MOV		g_SOFT_DOG,#0				; 軟件看門狗延時	最大4*256=1024us
WAIT_TI:		JB		TI,TXD_RET					; 等待發送完畢 ,需要加限時服務 如果	1024us內沒有收到 放棄本次發送
				DJNZ	g_SOFT_DOG,WAIT_TI			; 防止串口出錯一直在這里等待
				RET									; 時間溢出 返回	暫時沒有考慮傳輸錯誤的處理
TXD_RET:		CLR		TI							; TI中斷需要軟件清除
				RET									;
;****************************************************
;┌─────┬─────────────────-┐;
;│UART_RXD	 │上位機串口命令處理				  │;
;├─────┼─────────────────-┤;
;│入口參數: │RI=1							  │;
;├─────┼─────────────────-┤;
;│出口參數: │									  │;
;├─────┼─────────────────-┤;
;│影響資源: │A,SBUF							  │;
;└─────┴─────────────────-┘;
UART_RXD:		CLR		RI							; TASK2	 處理了	清除標志位
				MOV		A,SBUF						; 接收的CPU模擬串口數據
;┌──────┬────────────────-┐;
;│FACTORY	   │工廠測試命令					  │;
;└──────┴────────────────-┘;
FACTORY:		CJNE	A,#"F",IROUT				;
				CLR		f_LED3						; 工廠測試 LED關閉 
				ACALL	UART_TXD					;
                MOV     A,#0DH						;
				ACALL	UART_TXD					;      
                MOV     DPTR,#FACTORY_LIST          ;
                MOV     R7,#19                      ; 計數器
FACTORY_LOOP:	CLR     A                           ;
                MOVC    A,@A+DPTR                   ;
				ACALL	UART_TXD					;
				INC     DPTR						;
				DJNZ    R7,FACTORY_LOOP             ; 是否傳輸完畢
                AJMP    FACTORY_TEST                ; 
FACTORY_LIST:   DB      "enter factory mode"		;
                DB      0DH,                        ; 回車 0AH:新行
;┌──────┬────────────────-┐;
;│FACTORY_TEST│工廠測試						  │;
;├──────┼────────────────-┤;
;│入口參數:   │收到上位機串口命令“F”		  │;
;└──────┴────────────────-┘;
FACTORY_TEST:	CLR		EX0							; 不允許紅外中斷 進入工廠測試,獨占模式 只有定時器和串口工作
				CLR		ET0							; 不允許鼠標中斷
				CLR		EX1							; 不允許鍵盤中斷
				MOV		R3,#0						; 計時器清零
				CLR		f_TIME_OVER					; 標志位清零
TEST_LOOP:		JB		RI,TEST_RI					; 是否收到串口數據
				JB		f_TIME_OVER,TEST_TIME		; 是否計滿122880us
				AJMP	TEST_LOOP					; 循環
TEST_RI:		CLR		RI							; TASK2	 處理了	清除標志位
				MOV		A,SBUF						; 接收的CPU模擬串口數據
				CJNE	A,#"f",TEST_LOOP			; 除了"f"啥子都不處理。 "f":喂狗指令
				ACALL	UART_TXD					;
                MOV     A,#0DH						;
				ACALL	UART_TXD					;
				MOV		R3,#0						; 計時器清零
				AJMP	TEST_LOOP					; 上位機工廠測試清零指令
TEST_TIME:		CLR		f_TIME_OVER					; 清除122880us時間溢出標志位
				INC		R3							; 計數器加一
				MOV		A,R3						; 判斷是否溢出
				CJNE	A,#60,TEST_LOOP				; 總時間 :60*122880uS=	7.372800秒
				SETB	f_LED3						; 工廠測試看門狗溢出 LED打開 報警
                MOV     DPTR,#TEST_TIME_LIST        ;
                MOV     R7,#10                      ; 計數器
TEST_TIME_LOOP:	CLR     A                           ;
                MOVC    A,@A+DPTR                   ;
				ACALL	UART_TXD					;
				INC     DPTR						;
				DJNZ    R7,TEST_TIME_LOOP           ; 是否傳輸完畢
				AJMP	MAIN_LOOP					;
TEST_TIME_LIST: DB      "time over"					; 
                DB      0DH,                        ; 回車 0AH:新行
;┌─────┬─────────────────-┐;
;│IROUT	 │紅外發射處理程序         		  │;
;└─────┴─────────────────-┘;
IROUT:			CJNE	A,#"S",VER  				; 判斷是否紅外發射 后面跟3個字節的遙控器鍵碼數據
                CALL    IROUT_OUT                   ; 調用紅外發射程序
				ACALL	UART_TXD					; 返回命令字
                MOV     A,#0DH						; 送回車換行
				ACALL	UART_TXD					;
				AJMP	MAIN_LOOP					;
;┌─────┬─────────────────-┐;
;│VER		 │上位機命令處理: 要求版本			  │;
;└─────┴─────────────────-┘;
VER:			CJNE	A,#"V",DATE					; 判斷是要輸出:時間,版本信息,鍵盤鼠標命令
				ACALL	UART_TXD					;
                MOV     A,#0DH						;
				ACALL	UART_TXD					;
                MOV     DPTR,#VER_LIST  	        ;
                MOV     R7,#7                       ; 計數器
VER_LOOP:		CLR     A                           ;
                MOVC    A,@A+DPTR                   ;
				ACALL	UART_TXD					;
				INC     DPTR						;
				DJNZ    R7,VER_LOOP                 ; 是否傳輸完畢
				AJMP	MAIN_LOOP					;
VER_LIST:  	    DB      "IR1.00"		            ; IR1.00
                DB      0DH                         ; 回車
;┌─────┬─────────────────-┐;
;│DATE		 │上位機命令處理: 請求日期			  │; 暫時沒有用到
;└─────┴─────────────────-┘;
DATE:			CJNE	A,#"D",RI_RET				; 判斷命令是否請求日期
				ACALL	UART_TXD					;
                MOV     A,#0DH						;
				ACALL	UART_TXD					;
                MOV     DPTR,#DATA_LIST             ;
                MOV     R7,#11                      ; 計數器
DATE_LOOP:		CLR     A                           ;
                MOVC    A,@A+DPTR                   ;
				ACALL	UART_TXD					;
				INC     DPTR						;
				DJNZ    R7,DATE_LOOP                ; 是否傳輸完畢
DATA_LIST:      DB      "2005 10 01"				; 2005-10-1
                DB      0DH,                        ; 回車 0AH:新行
;**************************************************** 錯誤命令
RI_RET:			ACALL	UART_TXD					; 命令返回
                MOV     A,#0DH						;
				ACALL	UART_TXD					;
                MOV     DPTR,#BAD_LIST              ;
                MOV     R7,#12                      ; 計數器
BAD_LOOP:		CLR     A                           ;
                MOVC    A,@A+DPTR                   ;
				ACALL	UART_TXD					;
				INC     DPTR						;
				DJNZ    R7,BAD_LOOP                 ; 是否傳輸完畢
				AJMP	MAIN_LOOP					;
BAD_LIST:  	    DB      "bad command"               ; 
                DB      0DH                         ; 回車 0AH:新行
;┌─────┬─────────────────-┐;
;│IROUT_OUT │紅外發射處理程序         		  │;
;└─────┴─────────────────-┘;
IROUT_OUT:      CLR     EA                          ; 禁止所有中斷
				MOV		g_SOFT_DOG,#0				; 軟件看門狗延時	最大4*256=1024us
IROUT_HEAD1:	JB		RI,IROUT_HEAD2				; 等待發送完畢 ,需要加限時服務 如果	1024us內沒有收到 放棄本次發送
                NOP                                 ; 增加計時時間
				DJNZ	g_SOFT_DOG,IROUT_HEAD1		; 防止串口出錯一直在這里等待
				AJMP	IROUT_RET					; 時間溢出 返回
IROUT_HEAD2:	CLR     RI                          ;
				MOV     A,SBUF						;
                MOV     g_IR_HEAD1,A                ; 傳送數據
				MOV		g_SOFT_DOG,#0				; 軟件看門狗延時	最大4*256=1024us
IROUT_HEAD3:	JB		RI,IROUT_HEAD4				; 等待發送完畢 ,需要加限時服務 如果	1024us內沒有收到 放棄本次發送
                NOP                                 ;
				DJNZ	g_SOFT_DOG,IROUT_HEAD3		; 防止串口出錯一直在這里等待
				AJMP	IROUT_RET					; 時間溢出 返回
IROUT_HEAD4:	CLR     RI                          ;
				MOV     A,SBUF						;
                MOV     g_IR_HEAD2,A                ; 傳送數據
				MOV		g_SOFT_DOG,#0				; 軟件看門狗延時	最大4*256=1024us
IROUT_HEAD5:	JB		RI,IROUT_HEAD6				; 等待發送完畢 ,需要加限時服務 如果	1024us內沒有收到 放棄本次發送
                NOP                                 ;
				DJNZ	g_SOFT_DOG,IROUT_HEAD5		; 防止串口出錯一直在這里等待
				AJMP	IROUT_RET					; 時間溢出 返回
IROUT_HEAD6:	CLR     RI                          ;
				MOV     A,SBUF						;
                MOV     g_IR_HEAD3,A                ; 傳送數據
                ACALL   IROUT_DATA                  ;
                ACALL   LED_WINK                    ;                 
IROUT_RET:		CLR		TF1							; 清除定時器1
				CLR		IE0							; 清除紅外中斷
				SETB    EA                          ; 開中斷
				RET                                 ;
;****************************************************
LED_WINK:       MOV     g_SOFT_DOG,#10              ;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美欧美欧美欧美首页| 一区二区成人在线| 亚洲黄一区二区三区| 亚洲成av人影院在线观看网| 国产成人在线视频播放| 69久久99精品久久久久婷婷| 中文字幕一区二区不卡| 国产中文字幕一区| 欧美一区二区黄色| 午夜视频在线观看一区| 不卡视频一二三| 国产视频一区在线播放| 久久精品国产**网站演员| 欧美日本在线一区| 一区二区三区在线免费| 97se亚洲国产综合自在线不卡| 欧美一区二区日韩一区二区| 夜色激情一区二区| 色综合久久久久久久| 欧美激情一二三区| 国产大片一区二区| 久久久久久97三级| 国产黄人亚洲片| 久久午夜免费电影| 国产乱妇无码大片在线观看| 精品久久一区二区| 美女网站在线免费欧美精品| 5月丁香婷婷综合| 天天操天天综合网| 欧美肥大bbwbbw高潮| 天天操天天色综合| 国产精品女上位| 国产一区在线观看麻豆| 精品国产成人在线影院| 精品一区二区在线视频| 久久综合视频网| 国产精品亚洲成人| 国产精品久久久久久久久免费樱桃 | 中文字幕欧美区| 国产成人亚洲综合a∨婷婷| 久久久久国产精品人| 成人综合婷婷国产精品久久蜜臀| 久久久国际精品| 不卡视频在线观看| 亚洲一区二区av电影| 欧美精品粉嫩高潮一区二区| 免费精品视频最新在线| 久久久蜜桃精品| 成人av先锋影音| 亚洲影视在线播放| 3atv一区二区三区| 国产在线精品视频| 国产精品美女久久久久久2018| 99精品一区二区三区| 不卡视频一二三| 一区二区国产视频| 欧美一卡二卡在线| 国产99久久久久久免费看农村| 国产精品区一区二区三区| 91国偷自产一区二区三区成为亚洲经典 | 精品一区二区免费视频| 亚洲国产精品t66y| 欧美丝袜丝交足nylons图片| 看国产成人h片视频| 日本一区二区免费在线观看视频| 日本精品免费观看高清观看| 日韩激情视频网站| 国产精品久久久久久久久果冻传媒| 色哟哟精品一区| 国产在线视视频有精品| 一区二区三区欧美日| 精品久久久久久久久久久久久久久久久| 成人午夜激情片| 青青草原综合久久大伊人精品优势| 国产欧美一区二区三区沐欲 | 北条麻妃国产九九精品视频| 午夜电影久久久| 国产欧美日韩不卡免费| 制服丝袜激情欧洲亚洲| 成人爱爱电影网址| 久热成人在线视频| 夜夜嗨av一区二区三区中文字幕| 精品国产伦理网| 8v天堂国产在线一区二区| a美女胸又www黄视频久久| 久久99久久精品| 婷婷综合另类小说色区| 国产精品久久久久久久久快鸭| 欧美成人免费网站| 制服丝袜国产精品| 欧美自拍丝袜亚洲| 91原创在线视频| 国产成人日日夜夜| 精品在线你懂的| 热久久免费视频| 五月天激情综合网| 亚洲自拍偷拍欧美| 亚洲天堂久久久久久久| 欧美高清在线精品一区| 亚洲精品一区二区在线观看| 制服丝袜亚洲网站| 欧美精品三级日韩久久| 欧美三电影在线| 欧美三级视频在线播放| 在线视频国内自拍亚洲视频| 99久久久无码国产精品| 99久久er热在这里只有精品66| 国产盗摄一区二区三区| 国产成人免费视频精品含羞草妖精| 秋霞影院一区二区| 日韩福利电影在线| 奇米精品一区二区三区在线观看| 青青草原综合久久大伊人精品优势 | 粉嫩欧美一区二区三区高清影视| 韩国视频一区二区| 国产精品中文有码| 国产成人在线视频网站| 成人精品视频一区二区三区| 成人中文字幕在线| 91啪在线观看| 欧美色倩网站大全免费| 欧美一区二区三区免费观看视频| 欧美日韩中文另类| 欧美一区二区三区播放老司机| 日韩视频免费观看高清在线视频| 日韩视频免费观看高清完整版| 日韩精品中文字幕在线一区| 久久综合九色综合欧美98 | voyeur盗摄精品| 91蜜桃网址入口| 欧美日韩精品是欧美日韩精品| 3d成人h动漫网站入口| 欧美精品一区二区久久婷婷| 国产欧美日韩亚州综合 | 黄色小说综合网站| www.66久久| 欧美电影影音先锋| 久久久99精品免费观看| 亚洲欧美偷拍三级| 视频一区视频二区在线观看| 国模套图日韩精品一区二区| 波多野结衣亚洲| 欧美色精品在线视频| 久久久国产综合精品女国产盗摄| 亚洲男人天堂av网| 久久97超碰国产精品超碰| 成人爱爱电影网址| 欧美一区二区视频在线观看| 国产精品网友自拍| 日本不卡视频一二三区| 不卡的av在线| 精品日韩一区二区| 一片黄亚洲嫩模| 国产精品羞羞答答xxdd| 欧美日韩一二区| 国产日韩av一区二区| 午夜精品成人在线视频| 成人精品国产免费网站| 日韩欧美高清一区| 亚洲三级在线免费观看| 国产一区二区三区免费在线观看| 色哦色哦哦色天天综合| 久久久一区二区三区捆绑**| 亚洲高清免费在线| 成人国产精品视频| 久久综合五月天婷婷伊人| 午夜精品一区二区三区免费视频 | 色伊人久久综合中文字幕| 欧美变态口味重另类| 一级日本不卡的影视| 丁香啪啪综合成人亚洲小说| 日韩欧美国产1| 婷婷开心激情综合| 在线精品视频一区二区三四| 国产精品乱码一区二区三区软件| 美女视频一区二区三区| 欧美亚洲综合另类| 亚洲男人天堂av| 99精品欧美一区| 国产精品成人免费在线| 国产老女人精品毛片久久| 日韩欧美一级二级| 日本怡春院一区二区| 在线不卡免费欧美| 婷婷国产v国产偷v亚洲高清| 在线观看欧美黄色| 亚洲一区国产视频| 在线观看欧美黄色| 一区二区国产视频| 欧美在线免费视屏| 亚洲一区二区黄色| 精品视频一区二区不卡| 亚洲综合色网站| 欧美日韩国产首页| 日韩电影一区二区三区| 欧美一区二区三区精品| 另类欧美日韩国产在线| 日韩色在线观看| 精品一区二区精品| 久久久久国产精品麻豆|