亚洲欧美第一页_禁久久精品乱码_粉嫩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| 成人国产电影网| 7777精品伊人久久久大香线蕉经典版下载| 久久日一线二线三线suv| 亚洲自拍偷拍麻豆| 丁香桃色午夜亚洲一区二区三区| 欧美一区二区视频观看视频| 一区二区三区蜜桃网| 国产91精品露脸国语对白| 日韩欧美国产综合| 亚洲18女电影在线观看| 91色|porny| 国产精品久久久久久久蜜臀| 蜜桃视频一区二区三区在线观看| 欧美日韩一本到| 亚洲精品视频在线观看网站| 成人性生交大片免费| 久久久久久久久久久99999| 日本vs亚洲vs韩国一区三区二区 | 欧美一区二区在线视频| 亚洲美女一区二区三区| 成人激情综合网站| 中文字幕va一区二区三区| 国产成人精品免费一区二区| 精品蜜桃在线看| 国产自产v一区二区三区c| 精品国产乱码久久久久久久久| 免费在线视频一区| 日韩一卡二卡三卡四卡| 男女男精品视频| 欧美变态凌虐bdsm| 韩国女主播一区| 国产日韩欧美综合一区| 国产福利不卡视频| 国产精品区一区二区三区| 成人一级视频在线观看| 国产精品进线69影院| 国产剧情一区在线| 国产欧美日本一区视频| av亚洲产国偷v产偷v自拍| 亚洲人成网站精品片在线观看| 色一情一乱一乱一91av| 亚洲成人一二三| 欧美一级生活片| 国产一区二区三区免费| 综合婷婷亚洲小说| 欧美日韩一级二级| 国产在线一区观看| **网站欧美大片在线观看| 日本韩国一区二区| 青青草成人在线观看| 久久久久久毛片| 91国产福利在线| 毛片基地黄久久久久久天堂| 中文字幕电影一区| 欧美日韩亚洲综合一区| 久久精品国产秦先生| 国产精品久久久久一区| 欧美在线小视频| 国产原创一区二区三区| 亚洲人成人一区二区在线观看| 欧美亚洲一区二区三区四区| 精一区二区三区| 亚洲欧美另类久久久精品2019| 欧美日本一道本| 成人精品一区二区三区四区| 五月婷婷久久综合| 国产精品视频免费| 欧美一二三在线| 91在线观看一区二区| 日韩成人免费看| 亚洲天堂av一区| 亚洲精品一区二区三区香蕉| 欧美中文字幕亚洲一区二区va在线 | 国产丝袜欧美中文另类| 欧美色网一区二区| 不卡视频在线观看| 久久国产尿小便嘘嘘尿| 亚洲一区二区三区自拍| 久久久亚洲午夜电影| 欧美日韩三级视频| av电影天堂一区二区在线| 老司机一区二区| 一区二区欧美精品| 国产精品久久久久一区二区三区| 日韩片之四级片| 欧美亚洲动漫制服丝袜| aaa亚洲精品| 国产精品亚洲第一区在线暖暖韩国| 亚洲午夜在线视频| 中文字幕五月欧美| 国产视频在线观看一区二区三区| 欧美高清性hdvideosex| 一本一道综合狠狠老| 成人h动漫精品一区二区| 国产一区欧美日韩| 裸体健美xxxx欧美裸体表演| 亚洲五码中文字幕| 夜夜嗨av一区二区三区四季av| 自拍偷拍亚洲欧美日韩| 国产日本欧洲亚洲| 久久影院视频免费| 欧美成人伊人久久综合网| 欧美猛男gaygay网站| 欧美影片第一页| 欧美三级视频在线播放| 欧美在线视频日韩| 欧美性一级生活| 欧美日韩国产高清一区二区| 91黄色在线观看| 欧美体内she精视频| 欧美视频日韩视频| 欧美美女喷水视频| 在线电影一区二区三区| 在线播放国产精品二区一二区四区 | 日韩一区二区三区四区| 欧美精品 国产精品| 日韩一级片在线观看| 日韩精品中文字幕一区| 精品99一区二区三区| 国产亚洲午夜高清国产拍精品| 久久久一区二区| 亚洲丝袜另类动漫二区| 一卡二卡三卡日韩欧美| 午夜精品福利视频网站| 视频一区二区国产| 黑人巨大精品欧美黑白配亚洲| 国产盗摄一区二区| 色综合天天综合色综合av| 精品视频1区2区3区| 欧美精品色综合| 久久这里只有精品6| 欧美激情一区二区在线| 亚洲激情男女视频| 日韩激情视频在线观看| 国产乱子伦视频一区二区三区| 成人丝袜视频网| 欧美日韩国产一级二级| 精品精品国产高清a毛片牛牛 | 欧美videossexotv100| 国产日产欧美精品一区二区三区| 亚洲天堂2016| 久久精品久久99精品久久| 成人午夜私人影院| 欧美日韩另类一区| 国产欧美一区在线| 亚洲图片欧美色图| 国产在线视频精品一区| 色哟哟一区二区在线观看| 日韩免费一区二区| 怡红院av一区二区三区| 久久99国产精品久久| 日本高清不卡在线观看| 26uuu久久综合| 亚洲成人免费视频| 丰满白嫩尤物一区二区| 欧美人妖巨大在线| 中文字幕一区二| 国内精品自线一区二区三区视频| 色老汉av一区二区三区| 国产亚洲制服色| 日韩av电影免费观看高清完整版| 成人ar影院免费观看视频| 日韩欧美一区二区不卡| 亚洲综合精品久久| 成人性生交大片免费看中文网站| 日韩一区二区在线免费观看| 亚洲欧美一区二区三区极速播放 | 国产视频一区二区三区在线观看| 亚洲成人三级小说| 91视视频在线观看入口直接观看www| 日韩精品中文字幕一区| 亚洲国产精品久久艾草纯爱| av毛片久久久久**hd| 久久久www成人免费毛片麻豆 | 一区二区三区欧美亚洲| 韩国毛片一区二区三区| 欧美老年两性高潮| 亚洲激情成人在线| 91老师国产黑色丝袜在线| 国产色产综合产在线视频| 激情久久五月天| 欧美一级日韩不卡播放免费| 午夜视黄欧洲亚洲| 欧美伊人久久大香线蕉综合69| 亚洲人成网站影音先锋播放| www.欧美日韩国产在线| 国产欧美一区在线| 国产成人aaaa| 国产精品理伦片| 97精品视频在线观看自产线路二| 欧美韩国一区二区| 风间由美一区二区三区在线观看 | 国产精品福利av| 国产91精品久久久久久久网曝门| 亚洲精品在线观| 激情图片小说一区| www久久精品|