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

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

?? ch375a51.asm

?? CH375USB接口芯片的匯編持續
?? ASM
字號:
; CH372, CH375
; Interface Program for MCS-51
; 使用內置固件的USB設備方式
;
; Website:  http://winchiphead.com
; Email:    tech@winchiphead.com
; Author:   W.ch 2003.09
;
;****************************************************************************
; 程序運行環境
;
;CH375_CS_			BIT   P2.7            ;MCS-51單片機的A15引腳,用于CH375片選,不必定義
;CH375_A0			BIT   P2.0            ;MCS-51單片機的A8引腳,用于CH375地址0,不必定義,也可用外部74373鎖存的A0地址
;CH375_INT_			BIT   P3.2            ;MCS-51單片機的INT0引腳,用于CH375中斷請求,無需定義
;CH375_WR_			BIT   P3.6            ;MCS-51單片機的RD引腳,用于CH375寫選通,無需定義
;CH375_RD_			BIT   P3.7            ;MCS-51單片機的WR引腳,用于CH375讀選通,無需定義
;
; 本程序適用于時鐘頻率不高于24MHz的標準MCS-51單片機, 如果高于24MHz則應該適當增加延時, 如果低于24MHz則可以適當減少延時
;
; 需要主程序定義的參數
CH375_CMD_PORT		EQU    0BDF1H         ;CH375命令口的地址,地址譯碼后自動片選
CH375_DAT_PORT		EQU    0BCF0H         ;CH375命令口的地址,地址譯碼后自動片選
;
; 定義自己的USB設備的廠商VID是4348H, 產品PID是5537H
;USB_VENDOR_ID_L	EQU    48H            ;定義VENDOR ID的低字節
;USB_VENDOR_ID_H	EQU    43H            ;定義VENDOR ID的高字節
;USB_PRODUCT_ID_L	EQU    37H            ;定義PRODUCT ID的低字節
;USB_PRODUCT_ID_H	EQU    55H            ;定義PRODUCT ID的高字節
;
RECV_LEN			DATA   3FH            ;剛接收到的數據的長度
RECV_BUFFER			DATA   40H            ;數據緩沖區,用于保存接收到的下傳數據,長度為0到64字節
;SEND_LEN			DATA   3EH            ;準備下次發送的數據長度
;SEND_BUFFER		DATA   80H            ;準備下次發送的數據緩沖區
; 由于MCS-51單片機存取外部RAM的讀寫速度低于內部RAM, 并且需要用到DPTR, 所以讀寫速度較慢, 其程序可以參考本程序修改
;
; 定義位標志
FLAG_SEND_WAIT		BIT    20H.1          ;發送等待標志,1指示有數據塊正在CH375中等待發送
FLAG_INT_WAIT		BIT    20H.2          ;中斷數據等待發送標志,1指示有中斷數據正在CH375中等待發送
;
;
$INCLUDE			(CH375INC.ASM)
;
;****************************************************************************
;
;對外接口子程序,僅供參考
;
;  1. CH375_INIT     初始化子程序
;       USE:   ACC, R7, DPTR
;
;  2. CH375_UPLOAD   上傳數據塊子程序(通過批量端點上傳)
;       ENTRY: R0 指向存放了準備上傳數據的緩沖區, R7 準備上傳的數據長度, 有效數值是0到64
;       USE:   ACC, R0, R7, DPTR
;
;  3. CH375_UP_INT   上傳中斷數據子程序(通過中斷端點上傳),可選子程序
;       ENTRY: R0 指向存放了準備上傳數據的緩沖區, R7 準備上傳的數據長度, 有效數值是0到8
;       USE:   ACC, R0, R7, DPTR
;
;  4. CH375_INTER    中斷服務子程序
;       USE:   堆棧8字節
;
;****************************************************************************
;主程序的例子
;				ORG   0000H					;復位后單片機入口
;				LJMP  START
;				ORG   0003H					;CH375中斷
;				LJMP  CH375_INTER
;
;START:			NOP
;				...
;				CALL  CH375_INIT			;初始化
;				...
;				SETB  EA					;允許中斷
;				...
;WAIT_REQUEST:	NOP
;				SJMP  WAIT_REQUEST			;主循環
;
;****************************************************************************
;
; 初始化子程序
; USE:   ACC, R7, DPTR
CH375_INIT:		CLR   FLAG_SEND_WAIT		;清發送等待標志,1指示有數據塊正在CH375中等待發送
				CLR   FLAG_INT_WAIT			;清中斷數據發送等待標志,1指示有中斷數據正在CH375中等待發送
; 測試CH375是否正常工作,可選操作
;				MOV   DPTR,#CH375_CMD_PORT	;命令口地址
;				MOV   A,#CMD_CHECK_EXIST
;				MOVX  @DPTR,A				;測試CH375是否正常工作,可選操作
;				NOP							;如果時鐘頻率低于16MHz則無需該指令延時
;				DEC   DPL					;數據口地址
;				MOV   A,#55H
;				MOVX  @DPTR,A				;寫入測試數據
;				NOP							;如果時鐘頻率低于16MHz則無需該指令延時
;				CPL   A
;				MOV   R7,A					;取反數據
;				MOVX  A,@DPTR				;返回數據應該是測試數據取反
;				XRL   A,R7
;				JZ    CH375_INIT_OK			;測試通過
;				MOV   DPTR,#CH375_CMD_PORT	;命令口地址
;				MOV   A,#CMD_RESET_ALL
;				MOV   R7,#50H				;多次重復發命令
;CH375_INIT_HR:	MOVX  @DPTR,A				;執行硬件復位
;				DJNZ  R7,CH375_INIT_HR
;				MOV   R7,#0A0H				;160*256uS=40mS
;CH375_INIT_D2:	CLR   A
;CH375_INIT_D1:	DJNZ  ACC,CH375_INIT_D1		;延時1uS
;				DJNZ  R7,CH375_INIT_D2		;延時256uS
;				SJMP  CH375_INIT			;再次測試
;CH375_INIT_OK:
; 設置外部自定義的USB設備VID和PID,可選操作,不執行該命令則使用默認的VID和PID
;				MOV   DPTR,#CH375_CMD_PORT	;命令口地址
;				MOV   A,#CMD_SET_USB_ID
;				MOVX  @DPTR,A				;設置外部自定義的USB設備VID和PID,可選操作
;				NOP							;如果時鐘頻率低于16MHz則無需該指令延時
;				DEC   DPL					;數據口地址
;				MOV   A,#USB_VENDOR_ID_L
;				MOVX  @DPTR,A				;寫入廠商ID的低字節
;				MOV   A,#USB_VENDOR_ID_H
;				MOVX  @DPTR,A				;寫入廠商ID的高字節
;				MOV   A,#USB_PRODUCT_ID_L
;				MOVX  @DPTR,A				;寫入產品ID的低字節
;				MOV   A,#USB_PRODUCT_ID_H
;				MOVX  @DPTR,A				;寫入產品ID的高字節
;				NOP
; 設置USB工作模式
				MOV   DPTR,#CH375_CMD_PORT	;命令口地址
				MOV   A,#CMD_SET_USB_MODE
				MOVX  @DPTR,A				;設置USB工作模式
				NOP							;如果時鐘頻率低于16MHz則無需該指令延時
				DEC   DPL					;數據口地址
				MOV   A,#02H
				MOVX  @DPTR,A				;設置為使用內置固件的USB設備方式
				NOP							;如果時鐘頻率低于16MHz則無需該指令延時
				NOP							;如果時鐘頻率低于16MHz則無需該指令延時
CH375_INIT_WT:	MOVX  A,@DPTR				;返回操作狀態
				XRL   A,#CMD_RET_SUCCESS
				JNZ   CH375_INIT_WT			;等待操作成功,通常需要等待10uS-20uS
; 下述三條指令用于啟用中斷
				CLR   IT0					;置外部信號為低電平觸發
				SETB  PX0					;置高優先級
				CLR   IE0					;清中斷標志
				SETB  EX0					;允許CH375中斷
				RET
;
; 上傳數據塊子程序(通過批量端點上傳)
; ENTRY: R0 指向存放了準備上傳數據的緩沖區, R7 準備上傳的數據長度, 有效數值是0到64
; USE:   ACC, R0, R7, DPTR
CH375_UPLOAD:	NOP							;為了防止計算機程序沒有讀取數據而導致單片機一直在此等待,可以計算超時,參考CH375_UP_INT子程序
				JB    FLAG_SEND_WAIT,CH375_UPLOAD	;如果正在等待發送(前次發送尚未完成)則繼續等待,超過正常應該取走數據的時間未取走數據則認定為超時,可以跳出等待
				CLR   EX0					;為了防止中途被中斷而亂了順序,必須先禁止中斷
				MOV   DPTR,#CH375_CMD_PORT	;命令口地址
				MOV   A,#CMD_WR_USB_DATA7
				MOVX  @DPTR,A				;向USB端點2的發送緩沖區寫入數據塊
				NOP							;如果時鐘頻率低于16MHz則無需該指令延時
				DEC   DPL					;數據口地址
				MOV   A,R7
				MOVX  @DPTR,A				;首先寫入后續數據長度
CH375_UPLOAD_1:	MOV   A,@R0
				INC   R0
				MOVX  @DPTR,A				;發送數據
				DJNZ  R7,CH375_UPLOAD_1		;繼續發送數據直至結束
				SETB  FLAG_SEND_WAIT		;置等待發送標志
				SETB  EX0					;允許中斷
				RET
;
; 上傳中斷數據子程序(通過中斷端點上傳),可選子程序
; ENTRY: R0 指向存放了準備上傳數據的緩沖區, R7 準備上傳的數據長度, 有效數值是0到8
; USE:   ACC, R0, R7, DPTR
CH375_UP_INT:	MOV   A,#0FFH
CH375_UP_INT_W:	JNB   FLAG_INT_WAIT,CH375_UP_INT_G	;前次中斷數據已經被PC機取走則繼續
				NOP							;等待發送中斷數據
				NOP
				NOP							;最多等待2毫秒,以12MHz時鐘計算
				NOP
				DJNZ  ACC,CH375_UP_INT_W	;繼續等待,滿2毫秒后超時,建議將超時設置為較大的值,可以是正常情況下應該被取走的時間的2倍
; 如果未與計算機相連,或者計算機中的應用程序未運行,則會出現超時,否則不超過1毫秒中斷數據就應該被PC機取走
CH375_UP_INT_G:	CLR   EX0					;為了防止中途被中斷而亂了順序,必須先禁止中斷
				MOV   DPTR,#CH375_CMD_PORT	;命令口地址
				MOV   A,#CMD_WR_USB_DATA5
				MOVX  @DPTR,A				;向USB端點1的發送緩沖區寫入數據塊
				NOP							;如果時鐘頻率低于16MHz則無需該指令延時
				DEC   DPL					;數據口地址
				MOV   A,R7
				MOVX  @DPTR,A				;首先寫入后續數據長度
CH375_UP_INT_1:	MOV   A,@R0
				INC   R0
				MOVX  @DPTR,A				;發送中斷數據
				DJNZ  R7,CH375_UP_INT_1		;繼續發送數據直至結束
				SETB  FLAG_INT_WAIT			;置中斷等待標志
				SETB  EX0					;允許中斷
				RET
;
; 中斷服務子程序
; USE:   堆棧8字節
CH375_INTER:	PUSH  PSW					;現場保護
				PUSH  ACC
				PUSH  DPL
				PUSH  DPH
				PUSH  01H					;R1
				PUSH  02H					;R2
				MOV   DPTR,#CH375_CMD_PORT	;命令口地址
				MOV   A,#CMD_GET_STATUS
				MOVX  @DPTR,A				;獲取中斷狀態并取消中斷請求
				NOP							;如果時鐘頻率低于16MHz則無需該指令延時
				NOP							;如果時鐘頻率低于16MHz則無需該指令延時
				MOV   DPTR,#CH375_DAT_PORT	;數據口地址
				MOVX  A,@DPTR				;返回操作狀態
				CLR   IE0					;清中斷標志,對應于INT0中斷
				CJNE  A,#USB_INT_EP2_OUT,CH375_INT_1	;批量端點下傳成功,接收到數據
				LJMP  CH375_DOWN_OK			;USB批量數據接收成功,USB端點2的OUT
CH375_INT_1:	CJNE  A,#USB_INT_EP2_IN,CH375_INT_2	;批量端點上傳成功,發送數據成功
				LJMP  CH375_UP_OK			;USB批量數據發送成功,USB端點2的IN
CH375_INT_2:	CJNE  A,#USB_INT_EP1_IN,CH375_INT_3	;中斷端點上傳成功,發送中斷數據成功
				LJMP  CH375_UP_INT_OK		;USB中斷數據發送成功,USB端點1的IN
CH375_INT_3:	CJNE  A,#USB_INT_EP1_OUT,CH375_INT_4	;輔助端點下傳成功,接收到輔助數據
				LJMP  CH375_DN_AUX_OK		;USB輔助數據接收成功,USB端點1的OUT
CH375_INT_4:	;如果需要在USB總線掛起時使CH375進入低功耗模式,那么還應該處理USB_INT_USB_SUSPEND和USB_INT_WAKE_UP中斷狀態
				MOV   DPTR,#CH375_CMD_PORT	;命令口地址
				MOV   A,#CMD_UNLOCK_USB
				MOVX  @DPTR,A				;釋放當前USB緩沖區
				SJMP  CH375_INT_RET
CH375_INT_RET:	POP   02H					;R2
				POP   01H					;R1
				POP   DPH
				POP   DPL
				POP   ACC
				POP   PSW					;恢復寄存器
				RETI						;中斷返回
; USB批量數據接收成功
CH375_DOWN_OK:	MOV   DPTR,#CH375_CMD_PORT	;命令口地址
				MOV   A,#CMD_RD_USB_DATA
				MOVX  @DPTR,A				;從當前USB中斷的端點緩沖區讀取數據塊,并釋放緩沖區
				NOP							;如果時鐘頻率低于16MHz則無需該指令延時
				NOP							;如果時鐘頻率低于16MHz則無需該指令延時
				MOV   DPTR,#CH375_DAT_PORT	;數據口地址
				MOVX  A,@DPTR				;首先讀取后續數據長度
				MOV   R2,A
				JZ    CH375_INT_RET			;長度為0,沒有數據則直接退出
				MOV   RECV_LEN,A
				MOV   R1,#RECV_BUFFER		;接收緩沖區
CH375_INT_RECV:	MOVX  A,@DPTR				;接收數據
				MOV   @R1,A
				INC   R1
				DJNZ  R2,CH375_INT_RECV		;繼續接收數據直至結束
;				CALL  PROCESS				;分析下傳數據并準備應答
				LJMP  CH375_INT_RET
; USB批量數據發送成功
CH375_UP_OK:	NOP
;				MOV   A,SEND_LEN
;				JZ    CH375_INT_UNLK		;剩余長度為0,沒有數據需要發送,解鎖后退出
;				MOV   DPTR,#CH375_CMD_PORT	;命令口地址
;				MOV   A,#CMD_WR_USB_DATA7
;				MOVX  @DPTR,A				;向USB端點2的發送緩沖區寫入數據塊
;				NOP							;如果時鐘頻率低于16MHz則無需該指令延時
;				MOV   DPTR,#CH375_DAT_PORT	;數據口地址
;				MOV   A,SEND_LEN
;				MOVX  @DPTR,A				;首先寫入后續數據長度
;				MOV   R1,#SEND_BUFFER		;發送緩沖區
;CH375_INT_SEND:	MOV   A,@R1
;				MOVX  @DPTR,A				;發送數據
;				INC   R1
;				DJNZ  SEND_LEN,CH375_INT_SEND	;繼續發送數據直至結束
CH375_INT_UNLK:	MOV   DPTR,#CH375_CMD_PORT	;命令口地址
				MOV   A,#CMD_UNLOCK_USB
				MOVX  @DPTR,A				;釋放當前USB緩沖區
				CLR   FLAG_SEND_WAIT		;發送完成
				LJMP  CH375_INT_RET
; USB中斷數據發送成功, 中斷端點可以用于單片機及時通知計算機端,本程序未用到
CH375_UP_INT_OK:
				MOV   DPTR,#CH375_CMD_PORT	;命令口地址
				MOV   A,#CMD_UNLOCK_USB
				MOVX  @DPTR,A				;釋放當前USB緩沖區
				CLR   FLAG_INT_WAIT			;中斷數據已經被發送完成
				LJMP  CH375_INT_RET
; USB輔助數據接收成功,輔助端點可以用于計算機端向單片機端發送包,本程序未用到,輔助數據的接收可以參考批量端點
CH375_DN_AUX_OK:
				MOV   DPTR,#CH375_CMD_PORT	;命令口地址
				MOV   A,#CMD_UNLOCK_USB
				MOVX  @DPTR,A				;釋放當前USB緩沖區
				LJMP  CH375_INT_RET
;
;****************************************************************************
;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区四区在线免费观看| 日韩午夜激情免费电影| 国产精品热久久久久夜色精品三区 | 麻豆视频一区二区| 欧美色图一区二区三区| 亚洲一区二区五区| 欧美日韩一区在线观看| 五月婷婷激情综合网| 在线播放91灌醉迷j高跟美女 | 欧美激情一区二区| 成人动漫一区二区在线| 中文字幕一区av| 色婷婷激情一区二区三区| 亚洲第一搞黄网站| 日韩精品一区二区三区中文不卡| 国内精品免费在线观看| 国产精品久久夜| 欧洲在线/亚洲| 免费观看91视频大全| 精品国产区一区| 成人h精品动漫一区二区三区| 一区二区欧美精品| 日韩一区二区三| 成人性生交大片免费看在线播放 | 国产精品免费av| 欧洲亚洲精品在线| 极品少妇一区二区| 国产精品女同互慰在线看| 欧美午夜精品久久久久久孕妇| 水野朝阳av一区二区三区| 久久久久久久精| 色一情一乱一乱一91av| 日av在线不卡| 亚洲欧美激情一区二区| 欧美日韩日日摸| 国产麻豆精品久久一二三| 一区二区三区产品免费精品久久75| 日韩情涩欧美日韩视频| 成人激情图片网| 丝袜美腿亚洲一区二区图片| 国产精品萝li| 日韩视频免费观看高清完整版 | 国产一区二区三区四| 亚洲一区二区三区四区在线观看 | 亚洲免费av在线| 国产1区2区3区精品美女| 欧美国产成人在线| 69av一区二区三区| 欧美一区二区三区公司| 91精品国产91久久久久久一区二区 | 欧美精品一区二区久久久| 在线视频综合导航| 欧美视频日韩视频| 欧美午夜电影在线播放| 国产69精品久久久久777| 欧美一区二区视频观看视频| 亚洲午夜三级在线| 国产三级欧美三级日产三级99| 久久九九全国免费| 日韩影院精彩在线| 日韩精品影音先锋| 国产伦精一区二区三区| 国产成人综合视频| 亚洲天堂网中文字| 一本到高清视频免费精品| 亚洲伊人伊色伊影伊综合网| 欧美一区二区三区免费| 国产成人在线影院| 亚洲制服丝袜av| 欧美xxxx老人做受| 91女厕偷拍女厕偷拍高清| 日韩成人一级大片| 欧美国产精品劲爆| 91精品国产综合久久小美女| 国产一区二区三区免费播放| 亚洲另类色综合网站| 精品国精品国产| 在线观看亚洲精品| 国产九色精品成人porny| 亚洲影院免费观看| 久久亚洲精品国产精品紫薇| 在线观看日韩电影| 国产精品系列在线播放| 亚洲福利视频导航| 国产精品网曝门| 91精品在线观看入口| 99re66热这里只有精品3直播| 丝袜国产日韩另类美女| 一区在线播放视频| 久久综合成人精品亚洲另类欧美| 91尤物视频在线观看| 精品在线免费视频| 亚洲一区二区中文在线| 国产精品久久久久久久久免费樱桃 | av激情综合网| 青青草伊人久久| 亚洲图片欧美色图| 最新中文字幕一区二区三区| 337p粉嫩大胆噜噜噜噜噜91av| 欧美三级电影网站| 91同城在线观看| 国产夫妻精品视频| 国产精品综合在线视频| 美女视频一区二区三区| 午夜成人免费视频| 亚洲国产综合色| 亚洲精品你懂的| 亚洲欧洲成人精品av97| 欧美国产在线观看| 久久久www成人免费无遮挡大片| 91精品国产综合久久精品性色| 91国内精品野花午夜精品| 成人免费视频caoporn| 国产一区二区三区不卡在线观看| 男男视频亚洲欧美| 日韩成人av影视| 亚洲国产精品嫩草影院| 亚洲一区二区三区中文字幕 | 欧美一区二区三区日韩| 欧美精品乱码久久久久久按摩| 在线亚洲精品福利网址导航| 欧洲一区二区三区在线| 欧美视频在线一区| 欧美日本在线看| 欧美日韩一区二区电影| 91麻豆精品国产自产在线| 4438x亚洲最大成人网| 91精品啪在线观看国产60岁| 日韩免费福利电影在线观看| 精品国产乱码久久久久久浪潮 | 久久成人免费电影| 国产又黄又大久久| 国产成人精品综合在线观看| 成人丝袜高跟foot| 欧美日韩另类一区| 日韩午夜激情免费电影| 2020国产精品自拍| 国产精品视频第一区| 中文字幕一区二区三区视频| 亚洲综合男人的天堂| 亚洲国产日韩av| 日韩av电影免费观看高清完整版 | 久久一区二区三区国产精品| 国产精品看片你懂得| 亚洲一区二区三区影院| 免费观看在线综合| 成人视屏免费看| 欧美视频一区在线| 欧美成人官网二区| 国产精品久久网站| 亚洲国产成人va在线观看天堂| 美洲天堂一区二卡三卡四卡视频 | 国产亚洲一二三区| 亚洲免费伊人电影| 免费欧美在线视频| 风间由美一区二区三区在线观看| 欧美在线视频全部完| 精品福利在线导航| 亚洲欧洲av在线| 精品一区二区三区久久| 色综合天天做天天爱| 777久久久精品| 亚洲视频一二三| 国产揄拍国内精品对白| 欧美三区免费完整视频在线观看| 精品粉嫩超白一线天av| 一区二区三区视频在线看| 久久草av在线| 在线观看免费亚洲| 亚洲国产激情av| 午夜国产不卡在线观看视频| 粉嫩嫩av羞羞动漫久久久| 555夜色666亚洲国产免| 亚洲欧洲精品一区二区精品久久久| 日本在线观看不卡视频| 色成年激情久久综合| 国产无遮挡一区二区三区毛片日本| 伊人开心综合网| 国产高清在线观看免费不卡| 欧美精品18+| 亚洲激情六月丁香| 成人美女视频在线看| www欧美成人18+| 美腿丝袜亚洲一区| 欧美福利视频导航| 亚洲丝袜制服诱惑| 成人午夜伦理影院| 国产欧美日产一区| 久久国产精品免费| 7777精品久久久大香线蕉| 亚洲综合久久久| 色av成人天堂桃色av| 亚洲人成网站在线| 99v久久综合狠狠综合久久| 中文字幕av免费专区久久| 国产一区在线观看视频| 精品国产a毛片| 精品中文av资源站在线观看| 欧美成人精品1314www| 麻豆成人免费电影|