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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? ch375451.asm

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

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

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

; PC發(fā)送命令給CH451,由于主程序中的CH451_READ可能會(huì)被CH375的高優(yōu)先級(jí)中斷,所以不宜在CH375中斷服務(wù)程序中執(zhí)行
IS_CH451_CMD:	NOP
				MOV   B,CH451_CMD_H		;高4位命令
				MOV   A,CH451_CMD_L		;低8位命令
				MOV   CH451_CMD_H,#0FFH	;清除原命令碼,防止重發(fā)
				CALL  CH451_WRITE      ;向CH451發(fā)送命令
				LJMP  WAIT_USB_REQ		;主循環(huán)
;
;****************************************************************************
;
; 初始化子程序
; USE:   ACC, R7, DPTR
CH375_INIT:		CLR   FLAG_INT_WAIT			;清中斷等待標(biāo)志,1指示有中斷數(shù)據(jù)正在CH375中等待發(fā)送
; 測(cè)試CH375是否正常工作,可選操作
;				MOV   DPTR,#CH375_CMD_PORT	;命令口地址
;				MOV   A,#CMD_CHECK_EXIST
;				MOVX  @DPTR,A				;測(cè)試CH375是否正常工作,可選操作
;				NOP							;如果時(shí)鐘頻率低于16MHz則無(wú)需該指令延時(shí)
;				MOV   DPTR,#CH375_DAT_PORT	;數(shù)據(jù)口地址
;				MOV   A,#55H
;				MOVX  @DPTR,A				;寫(xiě)入測(cè)試數(shù)據(jù)
;				CPL   A
;				MOV   R7,A					;取反數(shù)據(jù)
;				MOVX  A,@DPTR				;返回?cái)?shù)據(jù)應(yīng)該是測(cè)試數(shù)據(jù)取反
;				XRL   A,R7
;				JZ    CH375_INIT_OK			;測(cè)試通過(guò)
;				MOV   DPTR,#CH375_CMD_PORT	;命令口地址
;				MOV   A,#CMD_RESET_ALL
;				MOV   R7,#50H				;多次重復(fù)發(fā)命令
;CH375_INIT_HR:	MOVX  @DPTR,A				;執(zhí)行硬件復(fù)位
;				DJNZ  R7,CH375_INIT_HR

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国精品一区二区| 国产精品福利在线播放| 国产精品免费av| 9人人澡人人爽人人精品| 国产欧美日韩另类视频免费观看| 日韩精品91亚洲二区在线观看 | 亚洲精品成人a在线观看| 99re这里只有精品首页| 亚洲激情图片一区| 国产午夜精品久久久久久免费视 | 欧美日本国产视频| 日本亚洲电影天堂| 亚洲精品在线免费播放| 91理论电影在线观看| 香蕉成人伊视频在线观看| 26uuu亚洲综合色欧美| 99国产精品久久久久久久久久 | 亚洲欧洲日韩综合一区二区| 色婷婷精品大在线视频| 日韩经典一区二区| 亚洲电影第三页| 亚洲成人www| 日韩 欧美一区二区三区| 亚洲国产欧美一区二区三区丁香婷| 欧美日韩不卡一区| 在线播放欧美女士性生活| 国产91综合一区在线观看| 午夜激情综合网| 中文字幕乱码久久午夜不卡| 欧美精品 日韩| 精品伦理精品一区| 欧美午夜精品一区二区三区| 丰满白嫩尤物一区二区| 国产成人av影院| 国产尤物一区二区| 另类小说图片综合网| 日韩高清不卡在线| 国产成人在线电影| 在线观看区一区二| 色综合 综合色| 日韩一区二区三区视频在线观看| 色综合天天综合| 91丨porny丨最新| 91麻豆精品91久久久久同性| 成人国产精品免费观看| 亚洲线精品一区二区三区 | 中文乱码免费一区二区| 日韩伦理免费电影| 日韩欧美在线综合网| 欧美日韩免费不卡视频一区二区三区| 欧美老年两性高潮| 91精品在线免费观看| 久久综合中文字幕| 亚洲丝袜制服诱惑| 久久电影网站中文字幕| 99久久亚洲一区二区三区青草| 欧美日韩国产乱码电影| 国产色综合一区| 热久久免费视频| 一区二区三区精品在线| 亚洲美女淫视频| 国产精品正在播放| 国产成人av电影在线播放| 一本一道久久a久久精品综合蜜臀| 欧美一区国产二区| 亚洲影院在线观看| 成人短视频下载| 国产午夜精品一区二区三区嫩草 | 国产精品国产三级国产a | 亚洲素人一区二区| 国产福利91精品| 日韩视频永久免费| 丝袜亚洲另类丝袜在线| 日本高清视频一区二区| 色婷婷综合久色| 亚洲国产精品av| 成人综合在线网站| 久久久精品人体av艺术| 日韩欧美高清dvd碟片| 亚洲成人午夜电影| 欧美在线三级电影| 亚洲国产成人porn| 欧美日韩国产一级| 午夜精品视频一区| 欧美精品自拍偷拍| 国产呦精品一区二区三区网站| 欧美麻豆精品久久久久久| 亚洲成人免费电影| 欧美一区二区大片| 日韩国产欧美在线播放| 9191国产精品| 国产精品香蕉一区二区三区| 久久精品免视看| 国产一区二区0| 1区2区3区精品视频| 欧美主播一区二区三区| 日日夜夜免费精品视频| 久久久久久亚洲综合影院红桃| 国产精品一二三区在线| 亚洲女人小视频在线观看| av不卡在线播放| 亚洲mv在线观看| ww亚洲ww在线观看国产| 99re66热这里只有精品3直播 | 亚洲激情五月婷婷| 欧美大片一区二区| 欧美在线看片a免费观看| 奇米一区二区三区| 亚洲欧洲国产日韩| 91麻豆免费观看| 精品在线播放免费| 亚洲一区二区欧美日韩| 欧美伦理影视网| 成av人片一区二区| 久久99国内精品| 亚洲一区二区不卡免费| 中文字幕精品一区二区三区精品| 欧美日韩免费观看一区二区三区| 首页国产欧美日韩丝袜| 最新热久久免费视频| 国产日韩欧美精品在线| 日韩你懂的在线播放| 在线观看av一区| 99re8在线精品视频免费播放| 午夜不卡av在线| 亚洲妇女屁股眼交7| 国产精品国模大尺度视频| 国产三区在线成人av| 日韩一区二区三免费高清| 欧美精品一二三| 欧美日韩国产综合一区二区| 日本韩国欧美一区二区三区| 成人av网站免费观看| 不卡的电影网站| av在线播放不卡| 99精品视频在线播放观看| 风间由美一区二区三区在线观看 | 久久精品日韩一区二区三区| 精品剧情在线观看| 久久久久久日产精品| 久久久精品免费网站| 国产精品天天看| 亚洲人成7777| 综合久久一区二区三区| 一区二区在线观看av| 亚洲少妇中出一区| 三级欧美韩日大片在线看| 亚洲永久免费av| 美女视频一区二区| 成人一级片在线观看| 欧美性淫爽ww久久久久无| 91九色02白丝porn| 3d动漫精品啪啪1区2区免费 | 欧美视频完全免费看| 日韩欧美国产电影| 自拍偷拍欧美激情| 韩国av一区二区三区| 精品视频色一区| 国产亚洲欧美激情| 久久超级碰视频| 欧美乱熟臀69xxxxxx| 亚洲精品免费在线| 成人自拍视频在线| 久久人人爽人人爽| 免费观看成人鲁鲁鲁鲁鲁视频| 91九色02白丝porn| 亚洲三级在线免费观看| 精品美女在线播放| 青青草国产精品亚洲专区无| 欧美日韩免费一区二区三区视频| 中文字幕中文字幕中文字幕亚洲无线| 麻豆精品国产91久久久久久| 欧美婷婷六月丁香综合色| 亚洲自拍偷拍网站| 色偷偷久久一区二区三区| 亚洲精品国产无天堂网2021| 99国产精品视频免费观看| 亚洲人成人一区二区在线观看 | 色婷婷久久久亚洲一区二区三区 | 日本乱人伦aⅴ精品| 亚洲免费在线播放| 在线视频欧美精品| 亚洲成在人线免费| 欧美撒尿777hd撒尿| 亚洲成人久久影院| 精品久久一区二区| 国产成人自拍网| 国产精品不卡视频| 日本精品一区二区三区四区的功能| 亚洲欧美日韩久久| 51精品秘密在线观看| 九色综合狠狠综合久久| 国产欧美日韩中文久久| 91污片在线观看| 日韩1区2区3区| 国产精品毛片久久久久久久| 91小视频在线观看| 国产一区二区三区免费| 国产午夜精品久久| 欧美日韩精品电影|