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

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

?? 通用同步和異步串行接收器和轉發器(usart).txt

?? USART在單片機里的通用c程序
?? TXT
?? 第 1 頁 / 共 5 頁
字號:
;*******************************************************************************
;*
;* 子程序名:          USART_AINT.asm
;* 程序名稱:          通用同步和異步串行接收器和轉發器(USART)
;*                    異步中斷接收和發送通信程序
;* 版本:              1.0
;* 適用 MCU 型號:     AVR所有型號
;* 使用資源:          r5,r6,r16,r17,r18,r19,r20,r28,r29,r30,r31
;*                    定時器/計數器0(溢出中斷)
;*
;* 程序功能:        
;*   本程序是通用同步和異步串行接收器和轉發器(USART)在異步狀態下使用中斷
;* 方式進行全雙工接收和發送數據的通信程序。共包括下面列表中這四個子程序。這
;* 四個子程序的具體使用方法請參考各自的說明。
;* ┏───────────┳───────────────────────┓
;* ┃      子程序名稱      ┃                子程序功能描述                ┃
;* ┣───────────╋───────────────────────┫
;* ┃    USART_AINT_INI    ┃      USART 異步通信中斷接收和發送初始化      ┃
;* ┣───────────╋───────────────────────┫
;* ┃    USART_INT_ACOM    ┃USART 異步通信中斷接收與發送協議命令和數據處理┃
;* ┣───────────╋───────────────────────┫
;* ┃     USART_RXCINT     ┃       USART 異步通信接收結束中斷處理         ┃
;* ┣───────────╋───────────────────────┫
;* ┃    USART_TXDREINT    ┃   USART 異步通信數據寄存器空中斷發送處理     ┃
;* ┗───────────┻───────────────────────┛
;* 
;* 注意:
;*   ①.r5 (USARTAI_RXNum)《接收作業次數寄存器》和 r6 (USARTAI_TXNum)
;* 《發送作業次數寄存器》為全局寄存器變量,不得被其他程序使用,否則將導致接收
;* 和發送的數據錯誤。
;*   ②.本程序共使用了3個中斷向量,需在主程序中設置其中斷向量轉移地址,分
;* 別為如下具體設置:
;* ┏─────────────┳───────┳─────────────┓
;* ┃       中斷名稱           ┃ 中斷向量地址 ┃       中斷處理程序       ┃
;* ┣─────────────╋───────╋─────────────┫
;* ┃   USART 接收結束中斷     ┃   URXCaddr   ┃       USART_RXCINT       ┃
;* ┣─────────────╋───────╋─────────────┫
;* ┃  USART 數據寄存器空中斷  ┃   UDREaddr   ┃      USART_TXDREINT      ┃
;* ┣─────────────╋───────╋─────────────┫
;* ┃    T/C0溢出中斷      ┃   OVF0addr   ┃     TC0_Timer_OVFINT     ┃
;* ┗─────────────┻───────┻─────────────┛
;*
;* 通信協議:
;*   ①.每次進行接收和發送的作業時均以協議命令來決定下一步操作方式,關于通信
;* 協議命令的約定方法請見下述詳細說明和命令字符串的具體定義。接收和發送的命令
;* 的數據字節長度固定為 10 個字節,其格式定義如下:COM(命令起始標識字符串)+
;* 設備編號(4 個字節)+ 命令字(3 個字節)。
;*   ②.接收或發送的數據幀格式:“8 個數據位, 1 個停止位,使用奇校驗”。注:如
;* 需更改本程序的數據幀格式可在“USART_AINT_INI”子程序中進行修改。
;*   ③.本程序約定雙方通信的波特率為“ 115.2 Kbps ”。注:如需更改本程序的通
;* 信波特率可在“波特率(bps)常數定義”中進行設置,但雙方通信的波特率受定時器/
;* 計數器0定時時間的約束,如果要修改最小雙方通信波特率,則需修改定時器/計數器
;* 0的定時時間(減小最小波特率需延長定時時間,增大則縮短定時時間)。定時器/計
;* 數器0的定時時間應略大于在約定雙方通信的波特率下接收完 255 個字節所用的時間
;* 總和,也不宜取得過大,過大則影響雙方通信的速度。
;*   ④.接收和發送的數據時均以[命令>數據,命令>數據……]形式為作業方式進行
;* 通信,但接收和發送的命令時可以任意形式進行通信。對于接收和發送的數據的校驗方
;* 法采用循環冗余檢測(CRC)校驗法,接收和發送的雙方必須采用相同的校驗算法,具
;* 體的檢測校驗算法請參考子程序“Data_CRC_2Byte”中的具體說明。
;*   ⑤.每次接收和發送的數據總長度均不超過 255 個字節。而且每次接收或發送數據
;* 的第一個字節為本次接收或發送的數據長度字符,最后兩個字節為循環冗余檢測校驗字
;* 節,因此每次接收和發送的有效數據長度均不得超過 252 個字節。,其計算公式如下:
;* 數據長度數值 = 有效數據字節長度 + 3( 1 個長度字符本身 + 2 個校驗字節)
;*   ⑥.在發送數據前要向對方先發送一請求發送數據命令字符串“COMXXXXATX”,等待
;* 對方回應一允許發送命令字符串“COMXXXXYET”的握手信號后,方可接著進行發送數據。
;*   ⑦.當接收到的數據或命令有錯誤時,可向對方發送要求重新發送命令字符串“CO
;* MXXXXRPT”,要求對方重新發送。對方在接收到此命令字符串后,依據上次發送的作業
;* 類型來重新發送數據或命令。對于接收到的數據經循環冗余檢測校驗錯誤后,也可使用
;* 重新發送一次允許發送命令字符串“COMXXXXYET”來要求對方重新發送數據。
;*   ⑧.當接收到的數據(不包括命令)經循環冗余檢測校驗正確后,必須向對方發送
;* 一接收數據正確命令字符串“COMXXXXOKD”,來結束本次接收數據操作。如果對方不發
;* 送收到此命令字符串“COMXXXXOKD”錯誤的信息(即發回“COMXXXXRPT”),不允許多
;* 次發送此命令字符串,否則將導致接收數據錯誤。
;*   ⑨.本程序通信協議命令還包括了下面三個協議命令字符串,具體用法如下述:
;* “COMXXXXSTD”[要求對方發送指定數據],此命令用于啟動雙方對指定數據的收發
;* 操作。
;* “COMXXXXRII”[要求對方重新初始化 USART 端口狀態],此命令用于當通信協議命令
;* 混亂,致使收發作業操作無法正常運行時,向對方發出從頭再重新開始收發作業請求。
;* 此命令也可用于雙方開始通信前向對方發送開始通信命令使用,使雙方的 USART 端口
;* 均處于起始狀態。
;* “COMXXXXYRI”[重新初始化 USART 端口狀態完成],此命令用于通知對方,我方己可
;* 以從頭再重新開始收發作業。
;*   ⑩.“COMXXXXCIT”[從 USART 端口傳送控制操作指令],此命令用于通知對方下
;* 面接著發送的數據為控制操作指令字符串,其字符串的第一個字節也為數據長度字符,
;* 但字符串的數值有無 CRC 校驗碼都可以,有 CRC 校驗碼時長度值相應也加 2 個。發送
;* 和回應控制操作指令字符串的通信協議遵循發送數據方式。接收方在收到控制操作指令
;* 字符串后,可能會發回三種回應協議命令:
;* ⑴.無法正確識別控制操作指令字符串的內容,表示接收到的指令錯誤或受到干擾,將
;*    發回要求對方重新發送命令字符串“COMXXXXRPT”。
;* ⑵.己經完成了控制操作指令字符串的內容指定的操作程序,將發回接收數據正確命令
;*    字符串“COMXXXXOKD”。
;* ⑶.控制操作指令字符串的內容為要求向其發送指定的數據,將發回請求發送數據命令
;*    字符串“COMXXXXATX”。
;* 
;* 注釋: 
;*   ①.定時器/計數器0用于約束接收作業全部完成(指從接收第一個數據到最后一
;* 個數據之間)的時間范圍,如果在規定的時間內沒有接收作業全部完成,則強制結束
;* 此次接收作業,以便下次接收作業正確操作。其定時時間應略大于在約定雙方通信的
;* 波特率下接收完 256 個字節所用的時間總和。
;*   ②.當收發命令字符串“COMXXXXRPT”超過 16 次時,即雙方接收和發送無論是數
;* 據還是協議命令只要其錯誤總次數超過 16 次,那么就認為雙方通信處于不同步狀態,
;* 或通信協議命令混亂。系統將會首先重新初始化本身的 USART 端口狀態和數據處理狀
;* 態,然后向對方發送要求對方重新初始化 USART 端口狀態命令字符串“COMXXXXRII”,
;* 以使雙方通信重新處于同步狀態。
;* 
;* 編作者:            
;* 編作者 E-Mail:     PTZSW@163.COM
;* 編制日期:          2004年12月18日
;*                  
;*******************************************************************************
;*
;* 指令條數:          1398 + return
;* 指令執行周期:      0 + return
;* 低位寄存器使用:    2 (r5,r6)(注:此兩個為全局寄存器變量,不得被其他程序使用)
;* 高位寄存器使用:    5 (r16,r17,r18,r19,r20)
;* 指針寄存器使用:    Y,Z
;*
;*******************************************************************************

;******** 本程序需調用的子程序定義:

.include   "DataCheck_CRC2B.asm"    ;包括2字節數據循環冗余檢測校驗子程序


;******** 依據硬件設置需修改的 SRAM 存儲地址定義:

.equ    USARTAI_TXCOM  = $0070      ;發送命令作業標志
.equ    DataUPD_TXALW  = $0071      ;允許更新發送數據標志
.equ    USARTAI_TXEnd  = $0072      ;發送作業全部結束標志
.equ    USARTAI_TXAPL  = $0074      ;發送地址指針低字節
.equ    USARTAI_TXAPH  = $0075      ;發送地址指針高字節
.equ    USARTAI_TXCOA  = $0076      ;首個發送命令字符地址
                                      ;要再占用往下的 10 個字節位置
.equ    USARTAI_TXDAA  = $0080      ;首個發送數據地址
                                      ;要再占用往下的 255 個字節位置

.equ    USARTAI_RXCOM  = $0182      ;接收命令作業標志
.equ    DataUPD_RXALW  = $0183      ;允許處理接收數據標志
.equ    USARTAI_RXUPD  = $0184      ;接收作業己更新標志
.equ    USARTAI_RXEnd  = $0185      ;接收作業全部結束標志
.equ    USARTAI_RXAPL  = $0186      ;接收作業地址指針低字節
.equ    USARTAI_RXAPH  = $0187      ;接收作業地址指針高字節
.equ    USARTAI_RXCOA  = $0188      ;首個接收命令字符地址
                                      ;要再占用往下的 10 個字節位置
.equ    USARTAI_RXDAA  = $0192      ;首個接收數據地址
                                      ;要再占用往下的 255 個字節位置

.equ    USARTAI_ERRNum = $0293      ;USART 發生收發錯誤次數計數器
.equ    USARTAI_T0VNum = $0294      ;定時器/計數器0溢出次數計數器


;*** 波特率(bps)常數定義:
;下面波特率設置以單片機的時鐘= 11.0592 MHz ,且不打開倍速的條件下進行定義。
;波特率(bps) = 115.2 Kbps,誤差 = 0.0%
.equ    USARTAI_UBRRL  = $05
.equ    USARTAI_UBRRH  = 0

;*** 定時器/計數器0定時 2 秒常數定義:
;下面定時器/計數器0定時參數設置以單片機的時鐘= 11.0592 MHz ,且定時器/計數
;器0的預分頻因子 = 1024 進行的條件下定義。其計算公式如下:
;定時時間 = 1 ÷ 單片機的時鐘頻率 × 1024 × USARTAI_T0CNT × USARTAI_T0Num
.equ    USARTAI_T0CNTI = $80        ;定時器/計數器0計數預定比例值
.equ    USARTAI_T0NumI = $03        ;定時器/計數器0溢出次數值


;*******************************************************************************
;*
;* 通用同步和異步串行接收器和轉發器(USART)異步中斷接收和發送通信程序:
;*
;* “USART_AINT_INI” --- USART 異步通信中斷接收和發送初始化子程序
;*
;* “USART_RXCINT”------ USART 異步通信接收結束中斷處理子程序。
;*
;* “USART_TXDREINT”---- USART 異步通信數據寄存器空中斷發送處理子程序。
;*
;* “USART_INT_ACOM”---- USART 異步通信中斷接收與發送協議命令和數據處理子程序
;*
;*******************************************************************************


;******** 全局程序寄存器變量定義(不得被其他程序使用):
.def    USARTAI_RXNum  = r5         ;接收作業次數寄存器
.def    USARTAI_TXNum  = r6         ;發送作業次數寄存器


;******** 本程序寄存器變量定義:

.def    USARTAI_TEMP   = r16        ;暫存寄存器
.def    USARTAI_TEMP2  = r17        ;暫存寄存器2
.def    USARTAI_TEMP3  = r18        ;暫存寄存器3


;******** 本程序常數定義:

.equ    USARTAI_TCOMI  = $e0        ;發送命令作業標志值(11100000)
.equ    DataUPD_TALWI  = $c0        ;允許更新發送數據標志值(11000000)
.equ    USARTAI_TEndI  = $f0        ;全部數據發送結束標志值(11110000)
.equ    USARTAI_RCOMI  = $07        ;接收命令作業標志值(00000111)
.equ    DataUPD_RALWI  = $03        ;允許處理接收數據標志值(00000011)
.equ    USARTAI_RUPDI  = $0a        ;接收作業己更新標志值(00001010)
.equ    USARTAI_REndI  = $0f        ;全部數據接收結束標志值(00001111)
.equ    USARTAI_ENALWI = $10        ;允許 USART 發生收發錯誤次數值(16次)
.equ    USARTAI_CMATNI = $0a        ;收發命令的字符串總長度數值(10個)
.equ    USARTAI_CMANI  = $03        ;收發命令的有效字符串長度數值(3個)


;******** 程序指令代碼清單:

;*******************************************************************************
;*
;* USART 異步通信中斷接收和發送初始化子程序 - “USART_AINT_INI”
;*
;* 說明:
;*   本子程序用于初始化 USART 異步中斷接收和發送通信。本初始化子程序只打開了
;* USART 的中斷接收功能,沒有打開中斷發送功能。
;*   本子程序只需在主程序中運行一次即可。除非釋放 RXD 與 TXD 引腳功能作為其
;* 他用途,如要再使用 USART 通信則需在主程序中再運行一次本子程序。
;*
;*******************************************************************************

USART_AINT_INI:
    push ZL                         ;壓入寄存器中的數值到堆棧
    push ZH
    in ZL,SREG                      ;壓狀態寄存器中的標志值到堆棧
    push ZL
    ldi ZL,USARTAI_TEndI            ;置發送作業全部結束標志值
    sts USARTAI_TXEnd,ZL
    ldi ZL,USARTAI_TCOMI            ;置發送命令作業標志值,首次發送一定為
    sts USARTAI_TXCOM,ZL              ;請求向對方發送或允許對方發送命令
    clr ZL                          ;清除允許更新發送數據標志
    sts DataUPD_TXALW,ZL
    ldi ZL,USARTAI_REndI            ;置接收作業全部結束標志值
    sts USARTAI_RXEnd,ZL
    ldi ZL,USARTAI_RCOMI            ;置接收命令作業標志值,首次接收一定為
    sts USARTAI_RXCOM,ZL              ;對方請求發送或對方允許發送命令 
    clr ZL                          ;清除接收作業己更新標志

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久国产精品99久久人人澡| 一区在线观看免费| 婷婷开心久久网| 欧美二区乱c少妇| 免费观看久久久4p| 久久久综合九色合综国产精品| 国产精品原创巨作av| 国产亚洲精品超碰| 91丨porny丨中文| 亚洲综合另类小说| 日韩三级视频在线观看| 国产精品66部| 日韩一区在线看| 欧美日本一区二区三区| 日本aⅴ精品一区二区三区| 亚洲精品一线二线三线| 在线观看欧美精品| 亚洲免费色视频| 制服丝袜中文字幕一区| 国产一区二区三区在线观看免费| 亚洲国产精品ⅴa在线观看| 色八戒一区二区三区| 午夜欧美大尺度福利影院在线看| 欧美变态口味重另类| 成人福利视频在线| 午夜私人影院久久久久| 久久久久久亚洲综合影院红桃| 国产91精品精华液一区二区三区| 亚洲精品免费一二三区| 日韩视频一区在线观看| 成人精品鲁一区一区二区| 午夜激情综合网| 久久久99精品免费观看不卡| 在线看国产一区二区| 激情五月婷婷综合| 亚洲综合视频在线观看| 久久久亚洲国产美女国产盗摄| 97se狠狠狠综合亚洲狠狠| 日本美女一区二区| 亚洲你懂的在线视频| 欧美大片在线观看| 在线观看日韩一区| 国产99久久久久久免费看农村| 亚洲一区二区在线免费观看视频| 欧美精品一区二区久久久| 色先锋资源久久综合| 久久国产精品99久久人人澡| 亚洲综合色成人| 国产精品电影一区二区三区| 欧美xfplay| 欧美日韩国产另类一区| 99精品久久99久久久久| 国产精品香蕉一区二区三区| 天天亚洲美女在线视频| 综合久久给合久久狠狠狠97色| 26uuu久久天堂性欧美| 欧美日韩精品高清| 色婷婷av一区| 97成人超碰视| 成人av资源网站| 国产69精品久久99不卡| 国内精品伊人久久久久av影院 | 日本欧美久久久久免费播放网| 亚洲天堂a在线| 欧美高清在线一区二区| www成人在线观看| 日韩欧美电影一区| 欧美一区二区三区四区视频| 欧美亚洲自拍偷拍| 色噜噜狠狠成人网p站| av中文字幕不卡| 99综合电影在线视频| 国产宾馆实践打屁股91| 国产成a人亚洲精品| 国产精品一区二区在线观看不卡| 免费观看成人鲁鲁鲁鲁鲁视频| 婷婷夜色潮精品综合在线| 亚洲福利一区二区三区| 亚洲第一福利一区| 亚洲第一福利一区| 日本成人在线不卡视频| 另类调教123区 | 亚洲国产裸拍裸体视频在线观看乱了 | 中文字幕久久午夜不卡| 久久久国产精品午夜一区ai换脸| 久久免费国产精品| 国产欧美日韩在线看| 一区二区三区在线视频观看58| 国产欧美精品一区| 国产精品麻豆网站| 亚洲精品写真福利| 亚洲成人免费av| 蜜桃视频第一区免费观看| 久久国产精品99久久久久久老狼 | 日韩午夜电影在线观看| 欧美成人aa大片| 久久久久久久免费视频了| 国产欧美日韩在线| 一区二区三区精品在线| 亚洲二区在线观看| 久久成人av少妇免费| 国产成人免费在线| 91碰在线视频| 欧美一区二区三区在线电影| 精品国产人成亚洲区| 国产精品人妖ts系列视频| 一区二区三区色| 久久不见久久见免费视频7| 国产成人精品影院| 欧洲色大大久久| 欧美成人高清电影在线| 国产精品网站导航| 午夜精品久久久久久| 国产精品亚洲成人| 欧美在线视频日韩| 精品电影一区二区| 亚洲桃色在线一区| 久久se这里有精品| 色网综合在线观看| 精品国产一区二区三区久久影院| 国产精品久久夜| 日韩成人精品视频| 99精品国产热久久91蜜凸| 4438亚洲最大| 亚洲欧洲日韩综合一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产suv精品一区二区883| 欧美精品丝袜中出| 国产精品国产三级国产普通话99| 三级亚洲高清视频| 91理论电影在线观看| 亚洲精品在线免费观看视频| 一区二区成人在线| 大陆成人av片| 欧美成人一区二区三区在线观看 | 在线视频中文字幕一区二区| 精品成人免费观看| 亚洲成人动漫在线免费观看| 成人精品在线视频观看| 日韩美女在线视频| 亚洲国产cao| 欧美精选午夜久久久乱码6080| 久久亚洲精华国产精华液| 婷婷成人综合网| 色噜噜狠狠色综合欧洲selulu| 国产欧美日韩综合| 国产伦精品一区二区三区在线观看| 欧美日本一区二区在线观看| 亚洲人成网站影音先锋播放| 国产成人综合亚洲网站| 日韩精品在线一区| 日韩电影在线一区二区| 欧美性感一类影片在线播放| 综合婷婷亚洲小说| 成人aa视频在线观看| 久久九九影视网| 国产精品综合一区二区| 2020国产成人综合网| 麻豆一区二区三| 日韩一本二本av| 美洲天堂一区二卡三卡四卡视频| 欧美日韩在线亚洲一区蜜芽| 亚洲精品乱码久久久久久日本蜜臀| 成人在线综合网| 欧美韩日一区二区三区| 粉嫩av一区二区三区粉嫩| 国产欧美综合在线| 国产精品亚洲午夜一区二区三区| 欧美精品一区二区三区蜜臀| 久久aⅴ国产欧美74aaa| 精品不卡在线视频| 国产一区二区91| 欧美激情一区不卡| 99精品久久久久久| 亚洲综合激情网| 欧美丝袜丝交足nylons图片| 亚洲成人动漫在线观看| 欧美一区二区三区在线观看| 久久99精品国产麻豆不卡| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 色哟哟精品一区| 亚洲综合清纯丝袜自拍| 4438成人网| 国产精品 日产精品 欧美精品| 国产日产欧产精品推荐色 | 蜜桃视频一区二区三区| 久久久精品人体av艺术| 成人av在线影院| 一片黄亚洲嫩模| 日韩一区和二区| 狠狠色丁香婷婷综合| 国产人成一区二区三区影院| av成人老司机| 午夜视频在线观看一区二区三区| 日韩一区二区电影在线| 国产成人综合在线| 亚洲国产日韩综合久久精品| 日韩你懂的在线播放| 91在线观看下载| 日本欧美大码aⅴ在线播放|