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

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

?? ch375451.asm

?? CH372的單片機編程,VC編程,VB編程,dephi編程
?? ASM
?? 第 1 頁 / 共 3 頁
字號:
; CH375/CH372/CH451 EVT
; U2(AT89C51) Program
;
; Website:  http://winchiphead.com
; Email:    tech@winchiphead.com
; Author:   W.ch 2003.12
;
;****************************************************************************
;
; 應用層定義
CONST_CMD_LEN	EQU   07H				; 命令塊的長度
; 由于命令與數據都是通過數據下傳管道(USB端點2的OUT)下傳, 為了防止兩者混淆,
; 我們可以在計算機應用程序與單片機程序之間約定, 命令塊的長度總是7, 而數據塊的長度肯定不是7, 例如64,32等
; 另外, 可以約定, 命令塊的首字節是命令碼, 等等
DEMO_CH451_CMD	EQU   56H              ; PC發送命令給CH451
DEMO_TEST_DATA	EQU   91H              ; 測試命令,將PC機發來的命令包的所有數據取反后返回
DEMO_UP_CLEAR	EQU   0A0H				; 連續上傳數據塊之前進行同步,實際是讓單片機清除上傳緩沖區的已有內容
DEMO_UP_DATA	EQU   0A1H				; 連續上傳數據塊,指定外部RAM緩沖區起始地址,不限長度
DEMO_DOWN_DATA	EQU   0A2H				; 連續下傳數據塊,指定外部RAM緩沖區起始地址,不限長度
;
STACK           EQU    0FH             ;堆棧區棧頂(向上延伸)
;
; CH375的命令代碼定義
$INCLUDE			(..\..\MCU_IF1\MCS51ASM\CH375INC.ASM)
;
; 需要主程序定義的參數
CH375_CMD_PORT		EQU    0BDF1H         ;CH375命令口的地址,地址譯碼后自動片選
CH375_DAT_PORT		EQU    0BCF0H         ;CH375命令口的地址,地址譯碼后自動片選
;
; 有關CH451的定義
CH451_DCLK		BIT   P1.7             ;串行數據時鐘,上升沿激活
CH451_DIN		BIT   P1.6             ;串行數據輸出,接CH451的數據輸入
CH451_LOAD		BIT   P1.5             ;串行命令加載,上升沿激活
CH451_DOUT		BIT   P3.3             ;INT1,鍵盤中斷和鍵值數據輸入,接CH451的數據輸出
CH451_KEY		DATA  28H              ;存放鍵盤中斷中讀取的鍵值
LAST_KEY		DATA  29H              ;保存上次的鍵值
;
; 有關CH375的定義
CH451_CMD_H		DATA  30H				;PC機發給CH451的高4位命令,為0FFH則命令無效
CH451_CMD_L		DATA  31H				;PC機發給CH451的低8位命令
BUF_ADDR_L		DATA  32H				;保存用于傳輸的外部RAM或者內部RAM緩沖區的地址,低8位
BUF_ADDR_H		DATA  33H				;保存用于傳輸的外部RAM或者內部RAM緩沖區的地址,高8位
BUF_LEN_L		DATA  34H				;當前剩余的要傳輸的數據長度,低8位
BUF_LEN_H		DATA  35H				;當前剩余的要傳輸的數據長度,高8位
CMD_BUFFER		DATA  38H				;命令包緩沖區,本程序約定命令包長度為CONST_CMD_LEN
CMD_BUFFER_NOT	DATA  39H				;命令碼的反碼,用于校驗命令包
CMD_BUFFER_ID	DATA  3AH				;命令包緩沖區次字節,緩沖區識別碼,針對MCS51單片機定義: 1-專用功能寄存器SFR, 2-內部RAM, 3-外部RAM, 不過本程序實際只演示內部RAM
CMD_BUFFER_ADRL	DATA  3BH				;命令包緩沖區第3字節,緩沖區地址低8位
CMD_BUFFER_ADRH	DATA  3CH				;命令包緩沖區第4字節,緩沖區地址高8位
CMD_BUFFER_LENL	DATA  3DH				;命令包緩沖區第5字節,數據總長度低8位
CMD_BUFFER_LENH	DATA  3EH				;命令包緩沖區第6字節,數據總長度高8位
; 由于MCS-51單片機存取外部RAM的讀寫速度低于內部RAM, 并且需要用到DPTR, 所以讀寫速度較慢, 其程序可以參考本程序修改
;
; 定義位標志
FLAG_INT_WAIT	BIT    2FH.2          ;中斷等待標志,1指示有中斷數據正在CH375中等待發送
;
;
;****************************************************************************
;主程序,用于配合演示CH375和CH451功能
				ORG   0000H            ;復位后單片機入口
				LJMP  START
				ORG   0003H            ;CH375中斷
				LJMP  CH375_INTER
				ORG   0013H            ;CH451中斷,鍵盤中斷后將通知PC機應用層
				LJMP  CH451_INTER
;
START:
; 以下初始化指令不是必要的,將單片機恢復為默認狀態
				CLR   EA               ;關中斷
				MOV   SP,#STACK        ;置堆棧初值
				MOV   A,#0FFH
				MOV   P0,A
				MOV   P1,A             ;清端口狀態
				MOV   P2,A
				MOV   P3,A
				CLR   A
				MOV   IE,A             ;清中斷允許控制寄存器
				MOV   IP,A             ;清中斷優先級控制寄存器
				MOV   PSW,A            ;清程序狀態字
				MOV   TCON,A           ;清定時器/計數器控制寄存器
				MOV   TMOD,A           ;清定時器/計數器工作方式寄存器
				MOV   PCON,A           ;清電源控制寄存器
				MOV   R7,#0FFH
				CALL  DELAY_MS			;延時等待CH375初始化完成
; 初始化
				CALL  CH375_INIT       ;初始化
				CALL  CH451_INIT       ;初始化
;				.....
; 啟動CH451的顯示驅動和鍵盤掃描
				MOV   B,#04H           ;設置系統參數命令
				MOV   A,#03H           ;禁止看門狗,使能鍵盤功能,使能顯示驅動
				CALL  CH451_WRITE      ;發出命令
				MOV   B,#05H           ;設置顯示參數
				MOV   A,#8CH           ;BCD譯碼方式,12級亮度
				CALL  CH451_WRITE      ;發出命令
				MOV   CH451_KEY,#0FFH  ;清除按鍵代碼,在使能鍵盤前,CH451的DOUT輸出串行數據
				MOV   LAST_KEY,#0FFH   ;有可能被當作鍵盤中斷請求INT1,所以要先清除
				MOV   CH451_CMD_H,#0FFH	;清除CH451的命令碼
; 由于在CH451啟動鍵盤功能前的串行輸出數據有可能產生鍵盤中斷,所以需要再次取消中斷
				CLR   IE1
				SETB  EA               ;允許中斷
;				...
;
; 如果P2的第5腳和第6腳之間插上短路子則由單片機控制演示,否則由PC機通過USB控制進行演示
				JB    P3.5,WAIT_USB_REQ ;T1,由PC機通過USB演示
;
; 由單片機控制演示,等待按鍵,然后先左移原顯示,再加上按鍵值
				MOV   B,#0FH
				MOV   A,#17H           ;向第1個數碼管加載數據'H'
				CALL  CH451_WRITE      ;發出命令
				MOV   B,#0EH
				MOV   A,#0EH           ;向第2個數碼管加載數據'E'
				CALL  CH451_WRITE      ;發出命令
				MOV   B,#0DH
				MOV   A,#18H           ;向第3個數碼管加載數據'L'
				CALL  CH451_WRITE      ;發出命令
				MOV   B,#0CH
				MOV   A,#19H           ;向第4個數碼管加載數據'P'
				CALL  CH451_WRITE      ;發出命令
				MOV   B,#0BH
				MOV   A,#10H           ;向第5個數碼管加載數據' '
				CALL  CH451_WRITE      ;發出命令
				MOV   B,#0AH
				MOV   A,#14H           ;向第6個數碼管加載數據'['
				CALL  CH451_WRITE      ;發出命令
				MOV   B,#09H
				MOV   A,#88H           ;向第7個數碼管加載數據'8.'
				CALL  CH451_WRITE      ;發出命令
				MOV   B,#08H
				MOV   A,#15H           ;向第8個數碼管加載數據']'
				CALL  CH451_WRITE      ;發出命令
				MOV   B,#06H           ;閃爍控制
				MOV   A,#30H           ;第3個和第4個數碼管閃爍
				CALL  CH451_WRITE      ;發出命令
;
; 以下演示為顯示按鍵代碼,并且左移
WAIT_KEY:		MOV   A,#0FFH
				XCH   A,CH451_KEY      ;取按鍵值并清除原值
				MOV   R2,A
				XRL   A,#0FFH
				JZ    WAIT_KEY         ;沒有按鍵
; 檢測到新按鍵則先左移顯示再顯示鍵值
				MOV   A,#00H           ;左移一位
				MOV   B,#03H           ;移位命令
				CALL  CH451_WRITE      ;發出命令
				MOV   A,#00H           ;左移一位
				MOV   B,#03H           ;移位命令
				CALL  CH451_WRITE      ;發出命令
				MOV   A,R2
				ANL   A,#3FH           ;鍵值0-63
				MOV   B,#0AH
				DIV   AB               ;A為鍵值的十位數
				MOV   B,#09H           ;向第7個數碼管加載數據
				CALL  CH451_WRITE      ;發出命令
				MOV   A,R2
				ANL   A,#3FH           ;鍵值0-63
				MOV   B,#0AH
				DIV   AB
				MOV   A,B              ;A為鍵值的個位數
				MOV   B,#08H           ;向第8個數碼管加載數據
				CALL  CH451_WRITE      ;發出命令
				SJMP  WAIT_KEY
;
; 以下指令開始工作循環,等待PC機命令進行操作
WAIT_USB_REQ:	NOP
				NOP
				NOP						;其它事務
				NOP

				MOV   A,CH451_CMD_H	   ;高4位命令
				CJNE  A,#0FFH,IS_CH451_CMD	;在CH375中斷服務程序中接收到PC機發給CH451的命令

; 沒有CH451的命令, 以下檢測按鍵狀態
;    LAST_KEY和CH451_KEY兩個變量,都是0FFH則沒有鍵按下
;    僅CH451_KEY為有效鍵值則是鍵剛按下, 兩者都是有效鍵值并且相同則已經通知過計算機
				MOV   A,LAST_KEY
				XRL   A,#0FFH
				JNZ   IS_KEY_RELEASE	;按鍵已經按下并且已經通知過PC機,所以去檢測按鍵釋放
				MOV   A,CH451_KEY
				XRL   A,#0FFH
				JZ    WAIT_USB_REQ		;沒有鍵按下,主循環
				MOV   A,CH451_KEY
				CLR   C
				SUBB  A,#40H
				JC    WAIT_USB_REQ		;鍵碼無效
; 檢測到新的鍵鍵,則置入有效的中斷特征數據,以通知PC機應用層
				MOV   A,CH451_KEY
				MOV   LAST_KEY,A
				MOV   R0,#01H          ;設定中斷特征數據01H,通知PC機的應用層,按鍵已按下
				MOV   R7,LAST_KEY		;中斷數據的次字節就是鍵碼,所以PC機應用層直接獲取鍵值,不必再讀取
				CALL  CH375_UP_INT2		;上傳中斷數據,本程序用于鍵盤中斷,所以每次只需要傳輸兩字節
				LJMP  WAIT_USB_REQ		;主循環
IS_KEY_RELEASE:	NOP
				CALL  CH451_READ       ;重新讀取最近一次有效按鍵的鍵值
				MOV   CH451_KEY,A		;保存鍵值
				XRL   A,LAST_KEY
				JZ    WAIT_USB_REQ     ;鍵碼相同,按鍵仍然沒有釋放
				MOV   R0,#02H          ;設定中斷特征數據02H,通知PC機的應用層,按鍵已釋放
				MOV   R7,LAST_KEY		;中斷數據的次字節就是鍵碼,所以PC機應用層直接獲取鍵值
				MOV   LAST_KEY,#0FFH   ;將要發送釋放信號給PC
				CALL  CH375_UP_INT2		;上傳中斷數據
				LJMP  WAIT_USB_REQ		;主循環

; PC發送命令給CH451,由于主程序中的CH451_READ可能會被CH375的高優先級中斷,所以不宜在CH375中斷服務程序中執行
IS_CH451_CMD:	NOP
				MOV   B,CH451_CMD_H		;高4位命令
				MOV   A,CH451_CMD_L		;低8位命令
				MOV   CH451_CMD_H,#0FFH	;清除原命令碼,防止重發
				CALL  CH451_WRITE      ;向CH451發送命令
				LJMP  WAIT_USB_REQ		;主循環
;
;****************************************************************************
;
; 初始化子程序
; USE:   ACC, R7, DPTR
CH375_INIT:		CLR   FLAG_INT_WAIT			;清中斷等待標志,1指示有中斷數據正在CH375中等待發送
; 測試CH375是否正常工作,可選操作
;				MOV   DPTR,#CH375_CMD_PORT	;命令口地址
;				MOV   A,#CMD_CHECK_EXIST
;				MOVX  @DPTR,A				;測試CH375是否正常工作,可選操作
;				NOP							;如果時鐘頻率低于16MHz則無需該指令延時
;				MOV   DPTR,#CH375_DAT_PORT	;數據口地址
;				MOV   A,#55H
;				MOVX  @DPTR,A				;寫入測試數據
;				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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色欧美片视频在线观看在线视频| 亚洲视频综合在线| 免费观看一级欧美片| 7777精品伊人久久久大香线蕉完整版| 一区二区三区日韩欧美| 欧美在线观看视频一区二区| 亚洲国产精品久久不卡毛片| 欧美精品一卡二卡| 精品一区二区在线播放| 久久久久国产精品人| 国产 欧美在线| 亚洲老妇xxxxxx| 欧美丰满一区二区免费视频| 麻豆精品一二三| 国产亚洲午夜高清国产拍精品| 国产+成+人+亚洲欧洲自线| 亚洲女与黑人做爰| 欧美日韩激情一区二区三区| 视频一区中文字幕国产| 久久综合色婷婷| 色欧美88888久久久久久影院| 丝袜脚交一区二区| 国产欧美一区二区三区网站 | 国产一区二区免费看| 欧美国产日本视频| 欧美在线制服丝袜| 国产一区二区三区在线观看精品 | 91香蕉视频污在线| 午夜激情综合网| 欧美国产视频在线| 69av一区二区三区| jizz一区二区| 久久激五月天综合精品| 亚洲男人的天堂在线aⅴ视频| 日韩免费观看高清完整版| av午夜一区麻豆| 精品一区二区成人精品| 一区二区三区四区在线| 久久久激情视频| 欧美一三区三区四区免费在线看 | 国产亚洲精品精华液| 欧美成人一级视频| 91在线视频观看| 韩国一区二区三区| 日日欢夜夜爽一区| 日韩毛片视频在线看| 亚洲精品一区二区三区蜜桃下载| 欧美怡红院视频| aaa国产一区| 国产麻豆精品在线| 青青草91视频| 亚洲尤物视频在线| 亚洲青青青在线视频| 久久精品亚洲国产奇米99| 欧美人xxxx| 在线观看欧美日本| www.日韩在线| 大白屁股一区二区视频| 久久精品99国产精品| 日韩精品成人一区二区在线| 夜色激情一区二区| 亚洲欧美日韩国产中文在线| 国产亚洲一区二区三区在线观看| 日韩美女天天操| 欧美一区二区三区视频免费 | 久久青草欧美一区二区三区| 欧美美女激情18p| 欧美视频一区二区三区四区| 色综合色综合色综合| 99re热这里只有精品视频| 国产不卡在线播放| 国产成人一区二区精品非洲| 极品美女销魂一区二区三区 | 成人免费黄色在线| 激情小说欧美图片| 国产制服丝袜一区| 国产一区二区三区在线观看免费视频| 麻豆成人久久精品二区三区红| 午夜av区久久| 免费看欧美美女黄的网站| 免费在线观看不卡| 麻豆成人免费电影| 国产成人午夜99999| 成人综合在线观看| 91麻豆精品在线观看| 色婷婷久久一区二区三区麻豆| 在线观看日韩电影| 91麻豆精品91久久久久同性| 欧美一区二区三区四区久久| 欧美一级欧美一级在线播放| 中文字幕精品三区| 亚洲欧美日韩小说| 亚洲自拍偷拍欧美| 无码av中文一区二区三区桃花岛| 五月婷婷激情综合| 毛片不卡一区二区| 成人av资源下载| 欧美色图在线观看| 日韩女优电影在线观看| 欧美国产精品中文字幕| 亚洲激情一二三区| 日本伊人午夜精品| 国产成人精品亚洲777人妖| 色综合咪咪久久| 日韩精品专区在线| 国产精品久久久久影院亚瑟 | 激情都市一区二区| eeuss影院一区二区三区| 在线观看区一区二| 26uuu另类欧美亚洲曰本| 中文久久乱码一区二区| 亚洲国产成人av好男人在线观看| 老司机精品视频线观看86| 成人中文字幕合集| 欧美久久一二三四区| 久久久不卡网国产精品二区 | 中文字幕中文乱码欧美一区二区| 一区二区日韩av| 国产一区欧美一区| 一本久久精品一区二区| 精品国产一区二区三区不卡| 亚洲免费观看在线观看| 久久66热偷产精品| 色www精品视频在线观看| 精品国产凹凸成av人导航| 亚洲欧洲制服丝袜| 国产一二精品视频| 欧美色中文字幕| 亚洲欧洲成人av每日更新| 蜜桃精品视频在线观看| 一本大道综合伊人精品热热| 日韩精品一区二区三区老鸭窝 | 久久99这里只有精品| 日本高清无吗v一区| 久久精品亚洲精品国产欧美| 日日欢夜夜爽一区| 色哟哟国产精品| 国产午夜亚洲精品不卡| 青青草国产成人99久久| 欧美在线观看禁18| 亚洲色图另类专区| 国产乱码精品一区二区三区忘忧草 | 最新国产の精品合集bt伙计| 激情文学综合丁香| 在线电影院国产精品| 亚洲综合视频在线观看| a亚洲天堂av| 国产精品视频在线看| 国产成人午夜片在线观看高清观看| 精品久久久久久久人人人人传媒| 肉肉av福利一精品导航| 欧美亚洲免费在线一区| 亚洲免费视频中文字幕| 欧美电影影音先锋| 亚洲精品视频在线看| 成人午夜视频免费看| 久久综合色8888| 韩国女主播成人在线| 91精品国产一区二区三区蜜臀| 亚洲电影欧美电影有声小说| 欧美在线一区二区三区| 亚洲一区在线视频观看| 在线观看三级视频欧美| 亚洲激情图片qvod| 91国产精品成人| 一区二区三区四区av| 在线看一区二区| 一区二区三区日韩欧美| 欧美色图在线观看| 五月激情综合婷婷| 欧美一级日韩一级| 蜜臀久久99精品久久久画质超高清| 欧美日韩国产综合一区二区三区| 亚洲大片在线观看| 欧美日韩国产一级| 日韩av二区在线播放| 精品日韩一区二区三区免费视频| 狠狠色丁香久久婷婷综| 久久免费视频一区| 国产suv精品一区二区6| 中文字幕一区不卡| 日本精品免费观看高清观看| 亚洲国产精品视频| 日韩一区二区电影| 国产美女视频91| 国产精品福利一区| 欧美专区在线观看一区| 日韩精品一区第一页| 精品国产一区二区三区忘忧草| 国产成人精品网址| 亚洲女同女同女同女同女同69| 欧美网站一区二区| 久久99这里只有精品| 亚洲欧洲一区二区在线播放| 欧美乱妇20p| 国产精品香蕉一区二区三区| 亚洲欧美日韩国产成人精品影院| 欧美人与性动xxxx| 国产成a人亚洲精| 亚洲国产成人va在线观看天堂|