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

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

?? soft232.asm

?? 用C51和匯編混合實現4個軟串口的程序
?? ASM
字號:
$NOMOD51

        NAME	Soft232

        PUBLIC  bFinEmpty0			; FiFo 0空
        PUBLIC  bFinOver0       		; FiFo 0溢出
        PUBLIC  bFinEmpty1			; FiFo 1空
        PUBLIC  bFinOver1			; FiFo 1溢出
        PUBLIC  bFinEmpty2			; FiFo 2空
        PUBLIC  bFinOver2			; FiFo 2溢出
;        PUBLIC  bFinEmpty3			; FiFo 3空
;        PUBLIC  bFinOver3			; FiFo 3溢出

        PUBLIC  _GetFiFo                        ; unsigned char GetFiFo( unsigned char FiFoNum );
        PUBLIC  _SetSoftBaud                    ; void SetSoftBaud( unsigned char Channel, unsigned char Baud );
        PUBLIC  InitSoft232                    ; void InitSoft232( void );

        ProgSeg	SEGMENT	CODE
        DatSeg  SEGMENT DATA
        BitSeg  SEGMENT BIT

EA		BIT	0A8H.7
P1		EQU	090H
PSW             EQU     0D0H
ACC             EQU     0E0H
;***********************************************
        DSEG    AT      20H
MultDat:        DS      1			; 多路采樣
	bRxBit0		EQU   (MultDat-20H)*8+0 ; 當前采樣位
	bRxBit1		EQU   (MultDat-20H)*8+1
	bRxBit2		EQU   (MultDat-20H)*8+2
	bRxBit3		EQU   (MultDat-20H)*8+3
	bStartBit0	EQU   (MultDat-20H)*8+4 ; 起始位有效
	bStartBit1	EQU   (MultDat-20H)*8+5
	bStartBit2	EQU   (MultDat-20H)*8+6
	bStartBit3	EQU   (MultDat-20H)*8+7
                        
        RSEG    DatSeg
RxBaudRate0:    DS      1			; 接收波特率分頻系數 = (9600 / 波特率) * 3
RxBaudRate1:    DS      1			; 接收波特率分頻系數 = (9600 / 波特率) * 3
RxBaudRate2:    DS      1			; 接收波特率分頻系數 = (9600 / 波特率) * 3
;RxBaudRate3:    DS      1			; 接收波特率分頻系數 = (9600 / 波特率) * 3
	
RxBaudCount0:   DS      1			; 接收波特率分頻計數器
RxBaudCount1:   DS      1			; 接收波特率分頻計數器
RxBaudCount2:   DS      1			; 接收波特率分頻計數器
;RxBaudCount3:   DS      1			; 接收波特率分頻計數器
	
RxBitCount0:    DS      1			; 接收位計數器 = 數據位數 + 1
RxBitCount1:    DS      1			; 接收位計數器 = 數據位數 + 1
RxBitCount2:    DS      1			; 接收位計數器 = 數據位數 + 1
;RxBitCount3:    DS      1			; 接收位計數器 = 數據位數 + 1
	
RxShift0:       DS      1			; 接收到的數據
RxShift1:       DS      1			; 接收到的數據
RxShift2:       DS      1			; 接收到的數據
;RxShift3:       DS      1			; 接收到的數據

FinOpt0:	DS      1			; FIFO指針長度字節
Fin0:           DS	8			; FIFO緩沖區
FinOpt1:	DS      1			; FIFO指針長度字節
Fin1:           DS	8			; FIFO緩沖區
FinOpt2:	DS      1			; FIFO指針長度字節
Fin2:           DS	8			; FIFO緩沖區
;FinOpt3:	 DS      1			; FIFO指針長度字節
;Fin3:           DS	8			; FIFO緩沖區


        RSEG    BitSeg  
bRxOK0:		DBIT    1			; 剛收到一字節, 但未存入 FIFO
bRxOK1:		DBIT    1			; 剛收到一字節, 但未存入 FIFO
bRxOK2:		DBIT    1			; 剛收到一字節, 但未存入 FIFO
;bRxOK3:         DBIT    1			; 剛收到一字節, 但未存入 FIFO

bFinEmpty0:	DBIT    1			; FiFo 0空
bFinOver0:	DBIT	1			; FiFo 0溢出
bFinEmpty1:	DBIT    1			; FiFo 1空
bFinOver1:	DBIT	1			; FiFo 1溢出
bFinEmpty2:	DBIT    1			; FiFo 2空
bFinOver2:	DBIT	1			; FiFo 2溢出
;bFinEmpty3:	DBIT    1			; FiFo 3空
;bFinOver3:	DBIT	1			; FiFo 3溢出

        CSEG	AT	000BH
	        LJMP	ISR_T0

        RSEG    ProgSeg
        USING   0
;----------------------------------------------- 存輸入優先型FIFO, 最大19個指令周期
; 入口:
; X = 緩沖區號
; Dat = 將要存入的RAM單元
; rX = 局部變量, 必須是 R0 or R1
mPutFin	MACRO	X, Dat, rX			; rX = R0 or R1
	LOCAL	mPutFin_2, mPutFin_9

		MOV	A, FinOpt&X
		JNB	ACC.3, mPutFin_2

		SETB	bFinOver&X		; Fin 溢出錯誤
		SJMP	mPutFin_9
mPutFin_2:
		ADD	A, #10H			; Eptr ++
		INC	A			; Len ++
		MOV	FinOpt&X, A
		SWAP	A
		ANL	A, #00000111B
		ADD	A, #Fin&X
		MOV	rX, A
		MOV	@rX, Dat
		CLR	bFinEmpty&X
mPutFin_9:
	ENDM
;----------------------------------------------- 取輸入優先型FIFO
; 入口:
; X = 緩沖區號
; rX = 局部變量, 必須是 R0 or R1
; rY = 局部變量
; 出口:
; A
mGetFin	MACRO	X, rX, rY
	LOCAL	mGetFin_2, mGetFin_9

		JB	bFinEmpty&X, mGetFin_9
	CLR	EA
		DEC	FinOpt&X
		MOV	A, FinOpt&X
	SETB	EA
		MOV	rY, A
		ANL	A, #07H		
		JNZ	mGetFin_2

		SETB	bFinEmpty&X
mGetFin_2:
		CPL	A
		INC	A
		XCH	A, rY   		; rY = (長度-1)的補碼
		SWAP	A
		ADD	A, rY
		ANL	A, #00000111B
		ADD	A, #Fin&X
		MOV	rX, A
		MOV	A, @rX
;		CLR	bFinOver&X
mGetFin_9:
	ENDM
;----------------------------------------------- 多路串行位接收
; 入口:
; X = 串口通道號
; Y = 局部變量, 必須是 R0 or R1
; 2-7-17-26個指令周期
mByteIn	MACRO	X, Y
	LOCAL	mByteIn_1, mByteIn_2, mByteIn_7, mByteIn_9

		JNB	bStartBit&X, mByteIn_7
								; if 起始位有效
		DEC	RxBaudCount&X
		MOV	A, RxBaudCount&X
		JNZ	mByteIn_7
mByteIn_1:					  		; if 波特率分頻到
		MOV	A, RxBitCount&X
		JNZ	mByteIn_2
						    		; if 停止位
		MOV	A, RxBaudRate&X
		CLR	C
		RRC	A
		ADD	A, RxBaudRate&X
		INC	A
		MOV	RxBaudCount&X, A	      	; 初始波特率分頻x1.5, 跳過起始位
		MOV	RxBitCount&X, #08H	        ; 暫時默認 8 位數據,無校驗
		CLR	bStartBit&X
		SETB	bRxOK&X
		SJMP	mByteIn_9
mByteIn_2:					    		; else 正常位接收
		DEC	RxBitCount&X
		MOV	A, RxShift&X
		MOV	C, bRxBit&X
		RRC	A
		MOV	RxShift&X, A
		MOV	A, RxBaudRate&X
		MOV	RxBaudCount&X, A	      	; 波特率分頻
		SJMP	mByteIn_9
mByteIn_7:
		JNB	bRxOK&X, mByteIn_9
		CLR	bRxOK&X
		mPutFin	X, RxShift&X, Y
mByteIn_9:
	ENDM
;*********************************************** 
;----------------------------------------------- T0中斷程序, 9600*3 Hz的中斷頻率, 公共部分28個指令周期
ISR_T0:
		PUSH	PSW
                PUSH    ACC
                PUSH    AR0

		MOV	A, P1			; P1口, P1.0 - P1.3 是接收腳
		MOV	R0, #MultDat	       	; 以下這段用于判斷是否有起始位,是4路同時處理的
		XCHD	A, @R0
		XRL	A, MultDat
		CPL	A
		ORL	A, MultDat
		CPL	A
		ANL	A, #0FH
		SWAP	A
		ORL	MultDat, A

		mByteIn	0, R0                   ; 驅動通道0
		mByteIn	1, R0                   ; 驅動通道1
		mByteIn	2, R0                   ; 驅動通道2
;		mByteIn	3, R0                   ; 驅動通道3

                POP     AR0
		POP	ACC
		POP	PSW
		RETI
;----------------------------------------------- 取FIFO中的數據
; unsigned char FetFiFo( unsigned char FiFoNum )
; 入口:
; 緩沖區編號
; 出口:
; 字節數據
_GetFiFo:
                CJNE    R7, #00H, _GetFiFo_1

                mGetFin	0, R0, R7
                LJMP    _GetFiFo_9
_GetFiFo_1:
                CJNE    R7, #01H, _GetFiFo_2

                mGetFin	1, R0, R7
                LJMP    _GetFiFo_9
_GetFiFo_2:
                CJNE    R7, #02H, _GetFiFo_3

                mGetFin	2, R0, R7
;                LJMP    _GetFiFo_9
_GetFiFo_3:
;                CJNE    R7, #03H, _GetFiFo_9
;
;                mGetFin	3, R0, R7
_GetFiFo_9:
                MOV     R7, A
                RET
;----------------------------------------------- 設置軟串口波特率
; void SetSoftBaud( unsigned char Channel, unsigned char Baud )
; 入口參數:
; 通道號, 波特率代號
_SetSoftBaud:
                CJNE    R5, #07H, $+3
                JNC     _SetSoftBaud_9
                MOV     A, R5
                JZ      _SetSoftBaud_9          ; 波特率代號在1-6之間
                MOV     A, #07H                 ; 本來應該是06H,但此處C必然為1,所以置07H
                SUBB    A, R5
                MOV     R5, #03H
                JZ      _SetSoftBaud_B

                XCH     A, R5
_SetSoftBaud_A:
                RL      A
                DJNZ    R5, _SetSoftBaud_A
                XCH     A, R5                   ; 得到波特率的計數值
_SetSoftBaud_B:
                CJNE    R7, #00H, _SetSoftBaud_1

		MOV	RxBaudRate0, R5
                MOV     A, R5
                RR      A
                ADD     A, R5
                INC     A
		MOV	RxBaudCount0, A
                SJMP    _SetSoftBaud_9
_SetSoftBaud_1:                
                CJNE    R7, #01H, _SetSoftBaud_2

		MOV	RxBaudRate1, R5
                MOV     A, R5
                RR      A
                ADD     A, R5
                INC     A
		MOV	RxBaudCount1, A
                SJMP    _SetSoftBaud_9
_SetSoftBaud_2:                
                CJNE    R7, #02H, _SetSoftBaud_3

		MOV	RxBaudRate2, R5
                MOV     A, R5
                RR      A
                ADD     A, R5
                INC     A
		MOV	RxBaudCount2, A
;                SJMP    _SetSoftBaud_9
_SetSoftBaud_3:                
;                CJNE    R7, #03H, _SetSoftBaud_9
;
;                MOV     RxBaudRate3, R5
;                MOV     A, R5
;                RR      A
;                ADD     A, R5
;                INC     A
;       	 MOV     RxBaudCount3, A
_SetSoftBaud_9:                
                RET
;----------------------------------------------- 軟串口初始化
InitSoft232:					
		MOV	FinOpt0, #00H
		SETB	bFinEmpty0
		CLR	bFinOver0

		MOV	FinOpt1, #00H
		SETB	bFinEmpty1
		CLR	bFinOver1

		MOV	FinOpt2, #00H
		SETB	bFinEmpty2
		CLR	bFinOver2

;		MOV	FinOpt3, #00H
;		SETB	bFinEmpty3
;		CLR	bFinOver3

		MOV	MultDat, #0FH

		CLR	bRxOK0
		CLR	bRxOK1
		CLR	bRxOK2
;		CLR	bRxOK3

		MOV	RxBitCount0, #08H
		MOV	RxBitCount1, #08H
		MOV	RxBitCount2, #08H
;		MOV	RxBitCount3, #08H
		RET
;***********************************************
END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人激情免费网| 中文字幕日韩av资源站| 日韩欧美电影在线| 中文字幕中文字幕在线一区| 午夜成人在线视频| 91视频国产观看| 久久久久久亚洲综合影院红桃| 亚洲一区二区在线播放相泽| 国产精品一区三区| 欧美一级日韩免费不卡| 一区二区三区欧美在线观看| 国产aⅴ综合色| 欧美zozo另类异族| 日韩二区三区四区| 欧美色图免费看| 亚洲免费色视频| www.激情成人| 国产精品丝袜黑色高跟| 国内一区二区视频| 欧美成人猛片aaaaaaa| 亚洲成av人片在线| 欧美三级在线播放| 亚洲一区免费观看| 一本色道亚洲精品aⅴ| 国产精品入口麻豆原神| 国产成人在线视频网址| 久久精品一二三| 国产在线播放一区三区四| 日韩精品一区二区三区四区| 蜜臀91精品一区二区三区| 欧美美女一区二区三区| 亚洲成人一区二区| 欧美午夜不卡视频| 亚洲成a人v欧美综合天堂下载 | 国产精品乱码一区二区三区软件 | 一区二区三区中文免费| 91蜜桃网址入口| 亚洲色图欧美偷拍| 在线观看精品一区| 亚洲www啪成人一区二区麻豆| 在线免费亚洲电影| 偷窥少妇高潮呻吟av久久免费| 欧美三级在线看| 免费观看30秒视频久久| 欧美精品一区在线观看| 国产成人免费在线观看不卡| 久久欧美中文字幕| 久久精品国产亚洲aⅴ| 日韩欧美一级二级三级久久久| 蜜桃视频一区二区三区| 久久综合成人精品亚洲另类欧美| 国产一区二区主播在线| 中文欧美字幕免费| 色综合网站在线| 婷婷综合另类小说色区| 久久中文娱乐网| 不卡的电影网站| 午夜国产不卡在线观看视频| 日韩限制级电影在线观看| 国产精品自在在线| 亚洲青青青在线视频| 欧美日韩亚洲丝袜制服| 国产乱码精品一区二区三区av| 国产精品人妖ts系列视频| 欧美影视一区在线| 国产美女一区二区| 樱桃视频在线观看一区| 日韩精品专区在线| 91亚洲国产成人精品一区二区三| 日韩精品亚洲一区| 国产日韩欧美精品一区| 欧美日韩一区二区三区高清| 国产乱淫av一区二区三区| 强制捆绑调教一区二区| 国产女主播一区| 欧美电影一区二区三区| 国产69精品久久99不卡| 日韩一区欧美二区| 亚洲婷婷在线视频| 欧美成人一区二区三区片免费 | 欧美性生活大片视频| 国产自产v一区二区三区c| 一区二区三区精品视频| 欧美激情一区不卡| 欧美一区二区精品在线| 色偷偷久久一区二区三区| 国产麻豆成人精品| 日本不卡视频一二三区| 亚洲天堂成人在线观看| 国产午夜精品久久久久久久| 91麻豆精品国产91| 91久久线看在观草草青青| 国产美女主播视频一区| 免费观看在线综合| 亚洲成人一区在线| 一区二区不卡在线播放| 最近中文字幕一区二区三区| 久久久噜噜噜久久中文字幕色伊伊| 欧美剧在线免费观看网站| 一本到一区二区三区| 99久久夜色精品国产网站| 国产高清久久久久| 国产乱一区二区| 国产一区二三区好的| 国内精品久久久久影院一蜜桃| 日韩精品欧美精品| 日韩在线观看一区二区| 香蕉av福利精品导航| 亚洲第一成人在线| 亚洲18影院在线观看| 亚洲图片欧美一区| 亚洲成人免费视| 亚洲18女电影在线观看| 午夜伦理一区二区| 日本在线不卡视频| 日本欧美一区二区在线观看| 国产精品亚洲一区二区三区妖精 | 在线亚洲一区观看| 一本久久a久久精品亚洲| 色欧美片视频在线观看| 91官网在线观看| 欧美日韩亚洲综合| 日韩一卡二卡三卡| 日韩免费视频线观看| 久久久蜜桃精品| 国产精品久久精品日日| 中文字幕一区日韩精品欧美| 中文字幕一区二区三区蜜月| 亚洲欧美电影一区二区| 午夜天堂影视香蕉久久| 久久国产福利国产秒拍| 国产福利91精品一区| 99久久99精品久久久久久 | 亚洲三级在线播放| 亚洲国产一区二区在线播放| 日本美女视频一区二区| 国产一区二区三区四| jiyouzz国产精品久久| 欧美中文字幕一二三区视频| 欧美另类高清zo欧美| 久久久五月婷婷| 亚洲视频一区二区在线观看| 香蕉乱码成人久久天堂爱免费| 久久超碰97人人做人人爱| 成人一二三区视频| 欧美色电影在线| 国产日韩三级在线| 亚洲欧美经典视频| 日韩成人免费电影| 成人黄色电影在线| 欧美久久免费观看| 国产精品午夜在线观看| 亚洲成av人在线观看| 国产不卡在线一区| 欧美日韩国产另类一区| 国产丝袜欧美中文另类| 亚洲一区二区精品久久av| 国产专区欧美精品| 欧美日韩综合色| 国产精品日产欧美久久久久| 免费在线视频一区| 99久久久久久| 国产色产综合色产在线视频| 亚洲午夜影视影院在线观看| 国产传媒欧美日韩成人| 欧美浪妇xxxx高跟鞋交| 亚洲欧洲美洲综合色网| 极品美女销魂一区二区三区免费| 色综合久久中文字幕综合网| 久久―日本道色综合久久| 午夜伊人狠狠久久| av在线不卡电影| 久久免费精品国产久精品久久久久| 一区二区三区欧美日| 成人午夜看片网址| 欧美成人一区二区三区| 首页国产欧美日韩丝袜| 一本色道久久综合亚洲精品按摩| 久久久久久97三级| 麻豆极品一区二区三区| 欧美日韩高清影院| 亚洲精品午夜久久久| 成人国产视频在线观看| 久久久不卡网国产精品二区| 日韩av电影免费观看高清完整版在线观看| 91丨九色丨蝌蚪富婆spa| 欧美国产精品一区二区三区| 久久99国产精品久久99| 日韩一区二区三区四区| 亚洲线精品一区二区三区八戒| 91老师片黄在线观看| 国产精品国产精品国产专区不片| 国产精品99久| 久久久久国产免费免费| 国产精品综合一区二区| 久久色在线视频| 国产在线精品一区二区夜色| 精品久久久久久久久久久久久久久久久| 五月开心婷婷久久| 91麻豆精品国产自产在线|