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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ch375451.asm

?? CH372的單片機編程,VC編程,VB編程,dephi編程
?? ASM
?? 第 1 頁 / 共 3 頁
字號:
;				MOV   BUF_ADDR_L,DPL
;				MOV   BUF_ADDR_H,DPH
;				MOV   DPTR,#CH375_DAT_PORT	;數(shù)據(jù)口地址
;				MOVX  @DPTR,A				;將數(shù)據(jù)寫入批量端點的發(fā)送緩沖區(qū)
;				DJNZ  R7,CH375_INT_UP0		;繼續(xù)寫入數(shù)據(jù)直至結(jié)束
;				LJMP  CH375_INT_RET

CH375_INT_CMD3:	CJNE  A,#DEMO_TEST_DATA,CH375_INT_CMD4
; 測試數(shù)據(jù)傳輸命令,將PC機發(fā)來的當前命令包的所有數(shù)據(jù)按位取反后返回
				MOV   DPTR,#CH375_CMD_PORT	;命令口地址
				MOV   A,#CMD_WR_USB_DATA7
				MOVX  @DPTR,A				;向批量端點的發(fā)送緩沖區(qū)寫入數(shù)據(jù)塊
				NOP							;如果時鐘頻率低于16MHz則無需該指令延時
				MOV   DPTR,#CH375_DAT_PORT	;數(shù)據(jù)口地址
				MOV   A,#CONST_CMD_LEN
				MOV   R7,A
				MOVX  @DPTR,A				;首先寫入后續(xù)數(shù)據(jù)長度,也就是命令包的長度
				MOV   R0,#CMD_BUFFER		;命令包緩沖區(qū)
CH375_TEST_DAT:	MOV   A,@R0
				CPL   A                     ;數(shù)據(jù)按位取反
				MOVX  @DPTR,A
				INC   R0
				DJNZ  R7,CH375_TEST_DAT     ;將命令包數(shù)據(jù)按位取反寫入批量端點的發(fā)送緩沖區(qū)
				MOV   BUF_LEN_L,#00H		;剩余數(shù)據(jù)長度為0,只發(fā)送一組數(shù)據(jù)
				MOV   BUF_LEN_H,#00H
				LJMP  CH375_INT_RET

CH375_INT_CMD4:	CJNE  A,#DEMO_CH451_CMD,CH375_INT_CMD5
; PC發(fā)送命令給CH451
				MOV   A,CMD_BUFFER_ADRH
				MOV   CH451_CMD_H,A         ;高4位命令
				MOV   A,CMD_BUFFER_ADRL     ;低8位命令
				MOV   CH451_CMD_L,A
; 為了防止在CH375中斷服務(wù)程序打斷主程序中的CH451_READ而執(zhí)行CH451_WRITE產(chǎn)生錯誤
; 所以在此保存CH451的命令碼由主程序在空閑時發(fā)給CH451
				LJMP  CH375_INT_RET

CH375_INT_CMD5:	NOP							;未定義的命令碼,不支持,放棄
				LJMP  CH375_INT_RET

; 接收下傳的數(shù)據(jù)塊,每組數(shù)據(jù)的長度不超過64字節(jié)
CH375_INT_DN1:
; 下面是向MCS51單片機的內(nèi)部RAM保存下傳的數(shù)據(jù),速度是外部RAM快3倍
				MOV   R0,BUF_ADDR_L			;由于演示板中沒有外部RAM,并且外部RAM的效率很低,所以用內(nèi)部RAM示范
				MOV   R0,#40H				;為了防止做測試時誤操作到數(shù)據(jù)區(qū)域00H-3FH,臨時指定專用緩沖區(qū)
CH375_INT_DN0:	MOVX  A,@DPTR				;從批量端點的接收緩沖區(qū)讀取數(shù)據(jù)
				MOV   @R0,A					;向內(nèi)部RAM緩沖區(qū)保存接收到的下傳數(shù)據(jù)
				INC   R0					;在12MHz時鐘是這種方法每復(fù)制1字節(jié)大概需要6uS
				DJNZ  R7,CH375_INT_DN0		;繼續(xù)取出數(shù)據(jù)直至結(jié)束
				LJMP  CH375_INT_RET
; 下面從MCS51單片機的外部RAM讀取數(shù)據(jù)并上傳,如果采用較高時鐘并且具有雙DPTR的單片機則速度可以快些
;CH375_INT_DN0:	MOV   DPTR,#CH375_DAT_PORT	;數(shù)據(jù)口地址
;				MOVX  A,@DPTR				;從批量端點的接收緩沖區(qū)讀取數(shù)據(jù)
;				MOV   DPL,BUF_ADDR_L		;由于MCS51單片機讀取外部RAM的效率很低
;				MOV   DPH,BUF_ADDR_H		;所以在12MHz時鐘是這種方法每復(fù)制1字節(jié)大概需要18uS
;				MOVX  @DPTR,A				;向外部RAM緩沖區(qū)保存接收到的下傳數(shù)據(jù)
;				INC   DPTR					;緩沖區(qū)地址增量
;				MOV   BUF_ADDR_L,DPL
;				MOV   BUF_ADDR_H,DPH
;				DJNZ  R7,CH375_INT_DN0		;繼續(xù)取出數(shù)據(jù)直至結(jié)束
;				LJMP  CH375_INT_RET

; USB批量數(shù)據(jù)發(fā)送成功
CH375_UP_OK:
; 假定在命令包中指定了總共需要上傳的數(shù)據(jù)長度,則根據(jù)該長度上傳數(shù)據(jù)
				MOV   A,BUF_LEN_L			;檢查剩余長度
				ORL   A,BUF_LEN_H
				JZ    CH375_INT_UNLK		;剩余數(shù)據(jù)長度為0,沒有數(shù)據(jù)需要發(fā)送,解鎖后直接退出
				CLR   C
				MOV   A,BUF_LEN_L
				SUBB  A,#40H				;檢查剩余長度
				MOV   R5,A
				MOV   A,BUF_LEN_H
				SUBB  A,#00H
				MOV   R6,A
				JC    CH375_UP_END			;剩余長度不足一個數(shù)據(jù)包的最大長度64
				MOV   R7,#40H
				MOV   BUF_LEN_L,R5
				MOV   BUF_LEN_H,R6
				SJMP  CH375_UP_NEXT
CH375_UP_END:	MOV   R7,BUF_LEN_L
				MOV   BUF_LEN_L,#00H
				MOV   BUF_LEN_H,#00H
CH375_UP_NEXT:	MOV   DPTR,#CH375_CMD_PORT	;命令口地址
				MOV   A,#CMD_WR_USB_DATA7
				MOVX  @DPTR,A				;向USB端點2的發(fā)送緩沖區(qū)寫入數(shù)據(jù)塊
				NOP							;如果時鐘頻率低于16MHz則無需該指令延時
				MOV   DPTR,#CH375_DAT_PORT	;數(shù)據(jù)口地址
				MOV   A,R7					;每次最多上傳64個字節(jié)的數(shù)據(jù)
				MOVX  @DPTR,A				;首先寫入后續(xù)數(shù)據(jù)長度
; 下面是從MCS51單片機的內(nèi)部RAM讀取數(shù)據(jù)并上傳,速度是外部RAM快3倍
				MOV   R0,BUF_ADDR_L			;由于演示板中沒有外部RAM,并且外部RAM的效率很低,所以用內(nèi)部RAM示范
CH375_INT_UP1:	MOV   A,@R0					;從內(nèi)部RAM緩沖區(qū)取出準備上傳的數(shù)據(jù)
				INC   R0					;在12MHz時鐘是這種方法每復(fù)制1字節(jié)大概需要6uS
				MOVX  @DPTR,A				;將數(shù)據(jù)寫入批量端點的發(fā)送緩沖區(qū)
				DJNZ  R7,CH375_INT_UP1		;繼續(xù)寫入數(shù)據(jù)直至結(jié)束
				LJMP  CH375_INT_UNLK
; 下面從MCS51單片機的外部RAM讀取數(shù)據(jù)并上傳,如果采用較高時鐘并且具有雙DPTR的單片機則速度可以快些
;CH375_INT_UP1:	MOV   DPL,BUF_ADDR_L		;由于MCS51單片機讀取外部RAM的效率很低
;				MOV   DPH,BUF_ADDR_H		;所以在12MHz時鐘是這種方法每復(fù)制1字節(jié)大概需要18uS
;				MOVX  A,@DPTR				;從外部RAM緩沖區(qū)取出準備上傳的數(shù)據(jù)
;				INC   DPTR					;緩沖區(qū)地址增量
;				MOV   BUF_ADDR_L,DPL
;				MOV   BUF_ADDR_H,DPH
;				MOV   DPTR,#CH375_DAT_PORT	;數(shù)據(jù)口地址
;				MOVX  @DPTR,A				;將數(shù)據(jù)寫入批量端點的發(fā)送緩沖區(qū)
;				DJNZ  R7,CH375_INT_UP1		;繼續(xù)寫入數(shù)據(jù)直至結(jié)束
;				LJMP  CH375_INT_UNLK

; 收到上傳成功中斷后,在退出之前必須解鎖USB緩沖區(qū),以便繼續(xù)收發(fā)數(shù)據(jù)
CH375_INT_UNLK:	MOV   DPTR,#CH375_CMD_PORT	;命令口地址
				MOV   A,#CMD_UNLOCK_USB
				MOVX  @DPTR,A				;釋放當前USB緩沖區(qū)
				LJMP  CH375_INT_RET

; USB中斷數(shù)據(jù)發(fā)送成功
CH375_UP_INT_OK:	MOV   DPTR,#CH375_CMD_PORT	;命令口地址
				MOV   A,#CMD_UNLOCK_USB
				MOVX  @DPTR,A				;釋放當前USB緩沖區(qū)
				CLR   FLAG_INT_WAIT			;清中斷等待標志,通知應(yīng)用程序可以繼續(xù)發(fā)送中斷數(shù)據(jù)
				LJMP  CH375_INT_RET
;
;****************************************************************************
;
; 初始化子程序
CH451_INIT:		CLR   CH451_DIN        ;先低后高,輸出上升沿通知CH451選擇4線串行接口
				SETB  CH451_DCLK       ;置為默認的高電平
				SETB  CH451_DIN
				SETB  CH451_LOAD
				SETB  CH451_DOUT       ;置為輸入
; 下述三條指令用于鍵盤中斷
				CLR   IT1              ;置外部信號為低電平觸發(fā)
				CLR   IE1              ;清中斷標志
				CLR   PX1              ;置低優(yōu)先級
				SETB  EX1              ;允許鍵盤中斷
				RET
;
;
; 輸出命令子程序
; ENTRY: B-ACC 待寫的12位數(shù)據(jù), 低8位在ACC中, 高4位在B的低4位中
; USE:   ACC, B, R7
CH451_WRITE:	CLR   EX1              ;禁止鍵盤中斷
				CLR   CH451_LOAD       ;命令開始,此命令可以放在后面
				MOV   R7,#08H          ;將ACC中8位送出
CH451_WRITE_8:	RRC   A                ;低位在前,高位在后
				CLR   CH451_DCLK
				MOV   CH451_DIN,C      ;送出一位數(shù)據(jù)
				SETB  CH451_DCLK       ;產(chǎn)生時鐘上升沿通知CH451輸入位數(shù)據(jù)
				DJNZ  R7,CH451_WRITE_8 ;位數(shù)據(jù)未完繼續(xù)
				MOV   A,B
				MOV   R7,#04H          ;將B中4位送出
CH451_WRITE_4:	RRC   A                ;低位在前,高位在后
				CLR   CH451_DCLK
				MOV   CH451_DIN,C      ;送出一位數(shù)據(jù)
				SETB  CH451_DCLK       ;產(chǎn)生時鐘上升沿通知CH451輸入位數(shù)據(jù)
				DJNZ  R7,CH451_WRITE_4 ;位數(shù)據(jù)未完繼續(xù)
				SETB  CH451_LOAD       ;產(chǎn)生加載上升沿通知CH451處理命令數(shù)據(jù)
				SETB  EX1              ;允許鍵盤中斷
				RET
;
;
; 輸入鍵值子程序
; EXIT:  ACC 鍵值數(shù)據(jù)
; USE:   ACC, R7
CH451_READ:		CLR   EX1              ;禁止鍵盤中斷
				CLR   CH451_LOAD       ;命令開始
				MOV   A,#07H           ;讀取鍵值命令的高4位0111B
				MOV   R7,#04H          ;忽略12位命令的低8位
CH451_READ_4:	RRC   A                ;低位在前,高位在后
				CLR   CH451_DCLK
				MOV   CH451_DIN,C      ;送出一位數(shù)據(jù)
				SETB  CH451_DCLK       ;產(chǎn)生時鐘上升沿鎖通知CH451輸入位數(shù)據(jù)
				DJNZ  R7,CH451_READ_4  ;位數(shù)據(jù)未完繼續(xù)
				SETB  CH451_LOAD       ;產(chǎn)生加載上升沿通知CH451處理命令數(shù)據(jù)
				CLR   A                ;先清除鍵值單元以便移位
				MOV   R7,#07H          ;讀入7位鍵值
CH451_READ_7:	MOV   C,CH451_DOUT     ;讀入一位數(shù)據(jù)
				CLR   CH451_DCLK       ;產(chǎn)生時鐘下升沿通知CH451輸出下一位
				RLC   A                ;數(shù)據(jù)移入ACC,高位在前,低位在后
				SETB  CH451_DCLK
				DJNZ  R7,CH451_READ_7  ;位數(shù)據(jù)未完繼續(xù)
				CLR   IE1              ;清中斷標志,讀操作過程中有低電平脈沖
				SETB  EX1              ;允許鍵盤中斷
				RET
;
;
; 鍵盤中斷子程序
; USE:   堆棧6字節(jié)
CH451_INTER:	PUSH  PSW              ;現(xiàn)場保護
				PUSH  ACC
				CLR   CH451_LOAD       ;命令開始
				MOV   A,#0F7H          ;讀鍵值命令,忽略12位命令的低8位,高4位用作結(jié)束標志
CH451_INTER_4:	SETB  C                ;在高位添0以檢測位數(shù)據(jù)結(jié)束
				RRC   A                ;低位在前,高位在后
				CLR   CH451_DCLK
				MOV   CH451_DIN,C      ;送出一位數(shù)據(jù)
				SETB  CH451_DCLK       ;產(chǎn)生時鐘上升沿鎖通知CH451輸入位數(shù)據(jù)
				CJNE  A,#0FFH,CH451_INTER_4 ;位數(shù)據(jù)未完繼續(xù),共4位,完成后為0FFH
				SETB  CH451_LOAD       ;產(chǎn)生加載上升沿通知CH451處理命令數(shù)據(jù)
				MOV   A,#0FCH          ;該數(shù)據(jù)用以檢測位數(shù)據(jù)結(jié)束
CH451_INTER_7:	MOV   C,CH451_DOUT     ;讀入一位數(shù)據(jù)
				CLR   CH451_DCLK       ;產(chǎn)生時鐘下升沿通知CH451輸出下一位
				RLC   A                ;數(shù)據(jù)移入ACC,高位在前,低位在后
				SETB  CH451_DCLK
				JC    CH451_INTER_7    ;位數(shù)據(jù)未完繼續(xù),共7位,完成后才移出0
				MOV   CH451_KEY,A      ;保存鍵值
				POP   ACC
				POP   PSW
				CLR   IE1              ;清中斷標志,該指令需根據(jù)實際情況作修改
				RETI                   ;中斷返回
;
;*********************************************************************************************************************
;
; 以毫秒為單位延時
; ENTRY: R7 延時毫秒數(shù)
; USE:   ACC, R7
DELAY_MS:		MOV   A,#0FAH				;250*(1*6+2)*0.5=1000uS
DELAY_1MS:		NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				DJNZ  ACC,DELAY_1MS			;每周期延時1毫秒
				DJNZ  R7,DELAY_MS
				RET
;
;*********************************************************************************************************************
;
END
;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久久无码国产精品| 亚洲人成网站色在线观看| 日韩精品高清不卡| 91精品国产综合久久精品图片| 丝袜a∨在线一区二区三区不卡| 欧美日韩一区在线观看| 男女视频一区二区| 久久久久久97三级| 97精品超碰一区二区三区| 一区二区在线观看av| 欧美日韩国产在线观看| 久久国产三级精品| 欧美高清在线精品一区| 欧美在线你懂得| 久久精品国产色蜜蜜麻豆| 国产欧美日韩中文久久| 色国产综合视频| 蜜臀久久99精品久久久画质超高清 | 久久久久97国产精华液好用吗| 国产91高潮流白浆在线麻豆| 亚洲精品ww久久久久久p站| 精品1区2区3区| 国产麻豆欧美日韩一区| 亚洲黄色尤物视频| 8x8x8国产精品| 成人h动漫精品一区二| 亚洲国产裸拍裸体视频在线观看乱了 | 欧美激情一区在线观看| 欧美少妇bbb| 国产精品一区一区三区| 亚洲国产成人91porn| 亚洲精品一区二区三区99| 91蝌蚪国产九色| 麻豆成人久久精品二区三区红 | 亚洲一区视频在线| 久久久午夜精品理论片中文字幕| 91浏览器在线视频| 国产一区二区三区四区五区美女| 亚洲综合免费观看高清在线观看| 欧美精品一区二区久久久| 色av综合在线| 成人伦理片在线| 老司机精品视频导航| 91麻豆国产精品久久| 夜夜爽夜夜爽精品视频| 2019国产精品| 91麻豆精品91久久久久久清纯 | 国产亚洲成av人在线观看导航| 欧美在线一二三四区| 成人看片黄a免费看在线| 蜜臀av在线播放一区二区三区| 亚洲视频一区在线观看| 亚洲国产成人自拍| 精品欧美一区二区久久| 欧美精品欧美精品系列| 色琪琪一区二区三区亚洲区| 国产成人免费视频网站高清观看视频| 日韩激情中文字幕| 亚洲一区电影777| 亚洲同性gay激情无套| 国产欧美精品一区二区色综合 | 中文字幕国产一区| 日韩女优av电影| 91精品国产欧美一区二区成人| 欧美色图免费看| 色久优优欧美色久优优| 一本一本大道香蕉久在线精品| 国产风韵犹存在线视精品| 精品在线播放午夜| 捆绑变态av一区二区三区| 日韩精品乱码免费| 日韩国产精品久久久久久亚洲| 亚洲大片免费看| 亚洲国产视频a| 天天色综合成人网| 婷婷中文字幕一区三区| 日韩和欧美的一区| 免费在线观看一区二区三区| 日本午夜一本久久久综合| 蜜桃av一区二区三区电影| 久久国产夜色精品鲁鲁99| 久99久精品视频免费观看| 极品尤物av久久免费看| 国产在线日韩欧美| 粉嫩aⅴ一区二区三区四区五区| 国产成人亚洲综合a∨婷婷| 成人中文字幕合集| 不卡的电影网站| k8久久久一区二区三区| 91蝌蚪porny| 在线成人av网站| 精品国产亚洲一区二区三区在线观看| 精品粉嫩超白一线天av| 国产亚洲女人久久久久毛片| 欧美国产视频在线| 亚洲人123区| 日韩精品三区四区| 国产成人在线视频网站| 91免费观看视频| 91精品国产福利| 久久久久成人黄色影片| 亚洲欧美日韩人成在线播放| 亚洲国产视频一区二区| 韩国三级电影一区二区| 99re这里只有精品首页| 欧美夫妻性生活| 久久色.com| 夜夜嗨av一区二区三区中文字幕| 久久网站热最新地址| 欧美卡1卡2卡| 国产午夜精品福利| 亚洲国产一区二区在线播放| 麻豆精品国产传媒mv男同| a在线播放不卡| 欧美理论在线播放| 国产视频911| 亚洲一区二区三区四区在线观看| 看国产成人h片视频| aaa欧美日韩| 日韩视频一区二区三区| 国产精品沙发午睡系列990531| 亚洲图片欧美综合| 国产成人免费av在线| 欧美视频三区在线播放| 中文字幕欧美三区| 看片网站欧美日韩| 欧美私人免费视频| 国产欧美精品一区| 老司机精品视频在线| 91精彩视频在线| 国产三级精品三级在线专区| 亚洲福利一二三区| av在线不卡观看免费观看| 日韩一区二区影院| 亚洲国产一区二区在线播放| 成人18精品视频| 久久精品一区四区| 日韩av一区二区在线影视| 91福利社在线观看| 国产无一区二区| 奇米一区二区三区| 欧美午夜片在线观看| 中文字幕一区二区三区在线不卡| 另类人妖一区二区av| 欧美日韩一区中文字幕| 亚洲色图清纯唯美| 成人av免费观看| 久久久久久电影| 韩国欧美国产1区| 日韩一区二区三区电影| 视频一区二区三区入口| 91福利精品视频| 亚洲黄色录像片| 91在线精品一区二区| 国产精品免费免费| 国产精品夜夜嗨| 久久精品一区二区三区av| 狂野欧美性猛交blacked| 欧美美女直播网站| 亚洲成人你懂的| 欧美日韩亚洲综合在线| 亚洲成av人在线观看| 欧美日韩精品一区二区三区四区| 一区二区三区日韩| 91麻豆国产精品久久| 亚洲精品中文在线影院| 99久久精品国产导航| 亚洲色图清纯唯美| 欧美做爰猛烈大尺度电影无法无天| 中文字幕一区二区在线播放| a在线播放不卡| 一区二区三区资源| 欧美巨大另类极品videosbest| 天堂一区二区在线| 日韩欧美久久一区| 九九精品视频在线看| 精品电影一区二区| 国产盗摄精品一区二区三区在线 | 欧美老年两性高潮| 天堂成人国产精品一区| 欧美一三区三区四区免费在线看| 肉丝袜脚交视频一区二区| 欧美一区二区三区公司| 老司机精品视频线观看86| 久久久av毛片精品| 一区二区三区中文免费| 色呦呦一区二区三区| 亚洲影院在线观看| 欧美精品一卡二卡| 久久99久久99| 国产精品麻豆视频| 在线观看日韩精品| 精品在线亚洲视频| 成人免费一区二区三区在线观看| 91美女片黄在线| 午夜精品爽啪视频| 欧美精品一区二区三区蜜臀| 成人av手机在线观看| 亚洲国产精品精华液网站| 日韩欧美区一区二|