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

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

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

?? USART在單片機里的通用c程序
?? TXT
?? 第 1 頁 / 共 5 頁
字號:
    cpi CCTSSDV_Right,CCTSSDV_RightI;命令是否為“允許我方發送數據”?
    brne USART_RXD_COMM6              ;否,則繼續
    rcall USART_RX_COMM_OKRX          ;是,調用處理此條命令處理程序
    rjmp USART_RXD_COMM_RET
USART_RXD_COMM6:
    ldi ZL,Low(USART_REPINI*2)      ;置“要求我方重新初始化”命令地址指針
    ldi ZH,High(USART_REPINI*2)
    ldi CTRLCOM_CNT,USARTAI_CMANI   ;置計數器初值=有效命令字長度數值
    rcall CTRLCOMM_IdentifyCOM      ;對此條命令進行識別
    cpi CCTSSDV_Right,CCTSSDV_RightI;命令是否為“要求我方重新初始化”?
    brne USART_RXD_COMM7              ;否,則繼續
    rcall USART_RX_COMM_REPINI        ;是,調用處理此條命令處理程序
    rjmp USART_RXD_COMM_RET
USART_RXD_COMM7:
    ldi ZL,Low(USART_RINIOK*2)      ;置“對方重新初始化完成”命令地址指針
    ldi ZH,High(USART_RINIOK*2)
    ldi CTRLCOM_CNT,USARTAI_CMANI   ;置計數器初值=有效命令字長度數值
    rcall CTRLCOMM_IdentifyCOM      ;對此條命令進行識別
    cpi CCTSSDV_Right,CCTSSDV_RightI;命令是否為“對方重新初始化完成”?
    brne USART_RXD_COMM8              ;否,則繼續
    rcall USART_RX_COMM_RINIOK        ;是,調用處理此條命令處理程序
    rjmp USART_RXD_COMM_RET
USART_RXD_COMM8:
    ldi ZL,Low(USART_CTRLCOM*2)     ;置“傳送控制操作指令”命令地址指針
    ldi ZH,High(USART_CTRLCOM*2)
    ldi CTRLCOM_CNT,USARTAI_CMANI   ;置計數器初值=有效命令字長度數值
    rcall CTRLCOMM_IdentifyCOM      ;對此條命令進行識別
    cpi CCTSSDV_Right,CCTSSDV_RightI;命令是否為“傳送控制操作指令”?
    brne USART_RXD_COMM_Error         ;否,轉至接收錯誤處理
    rcall USART_RX_COMM_CTRLCOM       ;是,調用處理此條命令處理程序
    rjmp USART_RXD_COMM_RET
USART_RXD_COMM_Error:
    rcall USART_RXD_Error           ;調用接收錯誤處理子程序
    rjmp USART_RXD_COMM_RET
USART_RXD_COMM_NOADDR:
    clr ZL                          ;清除接收作業己更新標志
    sts USARTAI_RXUPD,ZL
USART_RXD_COMM_RET:
    ret                             ;子程序返回


;*** 此段程序用于接收到[傳送控制操作指令]命令處理
USART_RX_COMM_CTRLCOM:
    lds ZL,DataUPD_RXALW            ;接收數據是否己處理?
    cpi ZL,DataUPD_RALWI              ;是,繼續
    breq USART_RX_COMM_CTRLCOM_RET    ;否,返回,等待處理接收數據
    lds ZL,USARTAI_TXEnd            ;發送作業是否全部結束?
    cpi ZL,USARTAI_TEndI              ;是,繼續
    brne USART_RX_COMM_CTRLCOM_RET    ;否,返回,等待發送作業結束
    lds ZL,CTRLCOM_MALWS            ;是否有正在處理控制操作指令?
    cpi ZL,CTRLCOM_MALWSI             ;否,繼續
    breq USART_RX_COMM_CTRLCOM_RET    ;是,返回,等待處理控制操作指令結束
    rcall USART_TX_COMM_OKRX        ;向對方發送“允許對方發送”命令
    clr ZL                          ;清除接收命令作業標志
    sts USARTAI_RXCOM,ZL
    ldi ZL,CTRLCOM_MALWSI           ;置允許處理控制操作指令標志值
    sts CTRLCOM_MALWS,ZL
    ldi ZL,CCTSSDV_USARTI           ;置控制操作指令發送者標志值
    sts CCOM_TSourceS,ZL              ;為 USART 端口送來控制操作指令
    clr ZL                          ;清除接收作業己更新標志
    sts USARTAI_RXUPD,ZL
USART_RX_COMM_CTRLCOM_RET:
    ret                             ;子程序返回

;*** 此段程序用于接收到[重新初始化完成]命令處理
USART_RX_COMM_RINIOK:
    clr ZL                          ;清除接收作業己更新標志
    sts USARTAI_RXUPD,ZL
    ret                             ;子程序返回

;*** 此段程序用于接收到[要求對方重新初始化]命令處理
USART_RX_COMM_REPINI:
    ldi ZH,(1<<RXCIE)|(1<<UDRIE)|(1<<RXEN)|(1<<TXEN)
    com ZH                          ;禁止接收器和發送器,禁止 USART 
    in ZL,UCSRB                       ;接收結束中斷和數據寄存器空中斷
    and ZL,ZH
    out UCSRB,ZL


;此處插入從頭開始重新進行數據處理操作程序


    ldi ZH,(1<<FE)|(1<<DOR)|(1<<PE)
    com ZH                          ;清除幀錯誤(FE)、數據溢出(DOR)
    in ZL,UCSRA                       ;及奇偶校驗錯誤(UPE)標志
    and ZL,ZH
    out UCSRA,ZL
    ldi ZH,(1<<UDRE)
    in ZL,UCSRA                     ;置數據寄存器空(UDRE)標志
    or ZL,ZH
    out UCSRA,ZL
    rcall USART_AINT_INI            ;重新初始化 USART 異步中斷接收和發送
    rcall USART_TX_COMM_RINIOK      ;向對方發送“重新初始化完成”命令
    ret                             ;子程序返回

;*** 此段程序用于接收到[向對方請求發送]命令處理
USART_RX_COMM_AskTX:
    lds ZL,DataUPD_RXALW            ;接收數據是否己處理?
    cpi ZL,DataUPD_RALWI              ;是,繼續
    breq USART_RX_COMM_AskTX_RET      ;否,返回,等待處理接收數據
    lds ZL,USARTAI_TXEnd            ;發送作業是否全部結束?
    cpi ZL,USARTAI_TEndI              ;是,繼續
    brne USART_RX_COMM_AskTX_RET      ;否,返回,等待發送作業結束
    rcall USART_TX_COMM_OKRX        ;向對方發送“允許對方發送”命令
    clr ZL                          ;清除接收命令作業標志
    sts USARTAI_RXCOM,ZL
    ldi ZL,DataUPD_RALWI            ;置允許處理接收數據標志值
    sts DataUPD_RXALW,ZL
    clr ZL                          ;清除接收作業己更新標志
    sts USARTAI_RXUPD,ZL
USART_RX_COMM_AskTX_RET:
    ret                             ;子程序返回

;*** 此段程序用于接收到[允許對方發送]命令處理
USART_RX_COMM_OKRX:
    lds ZL,DataUPD_TXALW            ;發送數據是否己更新?
    cpi ZL,DataUPD_TALWI              ;是,繼續
    breq USART_RX_COMM_OKRX_RET       ;否,返回,等待更新發送數據
    lds ZL,USARTAI_TXEnd            ;發送作業是否全部結束?
    cpi ZL,USARTAI_TEndI              ;是,繼續
    brne USART_RX_COMM_OKRX_RET       ;否,返回,等待發送作業結束
    clr ZL                          ;清除發送命令作業標志
    sts USARTAI_TXCOM,ZL
    rcall USART_AINT_TXINI          ;啟動發送數據
    clr ZL                          ;清除接收作業己更新標志
    sts USARTAI_RXUPD,ZL
USART_RX_COMM_OKRX_RET:
    ret                             ;子程序返回

;*** 此段程序用于接收到[要求對方重新發送]命令處理
USART_RX_COMM_REPTX:
    lds ZL,USARTAI_ERRNum           ;USART 發生收發錯誤次數是否超過允許次數?
    cpi ZL,USARTAI_ENALWI             ;是,轉至 USART 通信發生錯誤處理
    brlo USART_RX_COMM_REPTX1         ;否,繼續
    rcall USART_Error               ;調用 USART 通信發生錯誤處理程序
    rjmp USART_RX_COMM_REPTX_RET    ;返回
USART_RX_COMM_REPTX1:
    lds ZL,USARTAI_TXEnd            ;發送作業是否全部結束?
    cpi ZL,USARTAI_TEndI              ;是,繼續
    brne USART_RX_COMM_REPTX_RET      ;否,返回,等待發送作業結束
    rcall USART_AINT_TXINI          ;重新啟動原發送作業
    clr ZL                          ;清除接收作業己更新標志
    sts USARTAI_RXUPD,ZL
    lds ZL,USARTAI_ERRNum           ;USART 發生收發錯誤次數+1
    inc ZL
    sts USARTAI_ERRNum,ZL
USART_RX_COMM_REPTX_RET:
    ret                             ;子程序返回

;*** 此段程序用于接收到[接收數據正確]命令處理
USART_RX_COMM_DataOK:
    ldi ZL,USARTAI_TCOMI            ;置發送命令作業標志值
    sts USARTAI_TXCOM,ZL
    ldi ZL,DataUPD_TALWI            ;置允許更新發送數據標志值
    sts DataUPD_TXALW,ZL
    clr ZL                          ;清除接收作業己更新標志
    sts USARTAI_RXUPD,ZL
    ret                             ;子程序返回

;*** 此段程序用于接收到[要求對方發送指定數據]命令處理
USART_RX_COMM_DCOMTX:
    ldi ZL,DataUPD_TALWI            ;置允許更新發送數據標志值
    sts DataUPD_TXALW,ZL
    clr ZL                          ;清除接收作業己更新標志
    sts USARTAI_RXUPD,ZL
USART_RX_COMM_DCOMTX_RET:
    ret                             ;子程序返回

;*** 此段程序用于“USART 接收器錯誤”和“接收命令或數據錯誤”處理
USART_RXD_Error:
    lds ZL,USARTAI_ERRNum           ;USART 發生收發錯誤次數是否超過允許次數?
    cpi ZL,USARTAI_ENALWI             ;是,轉至 USART 通信發生錯誤處理
    brlo USART_RXD_Error1             ;否,繼續
    rcall USART_Error               ;調用 USART 通信發生錯誤處理程序
    rjmp USART_RXD_Error_RET        ;返回
USART_RXD_Error1:
    lds ZL,USARTAI_TXEnd            ;發送作業是否全部結束?
    cpi ZL,USARTAI_TEndI              ;是,繼續
    brne USART_RXD_Error_RET          ;否,返回,等待發送作業結束
    rcall USART_TX_COMM_REPTX       ;向對方發送“要求重新發送”命令
    ldi ZH,(1<<FE)|(1<<DOR)|(1<<PE)
    com ZH                          ;清除幀錯誤(FE)、數據溢出(DOR)
    in ZL,UCSRA                       ;及奇偶校驗錯誤(UPE)標志
    and ZL,ZH
    out UCSRA,ZL
    ldi ZL,USARTAI_REndI            ;置接收作業全部結束標志值
    sts USARTAI_RXEnd,ZL
    clr ZL                          ;清除接收作業己更新標志
    sts USARTAI_RXUPD,ZL
    lds ZL,USARTAI_ERRNum           ;USART 發生收發錯誤次數+1
    inc ZL
    sts USARTAI_ERRNum,ZL
USART_RXD_Error_RET:
    ret                             ;子程序返回


;*******************************************************************************
;*
;* 從 USART 端口上接收到的數據處理子程序 - “USART_RXD_Data”
;*
;* 說明:
;*   本子程序用于處理從 USART 端口上接收到的數據,本子程序中包含有數據循環
;* 冗余檢測校驗子程序。
;*   本子程序要在主程序中不間斷循環查詢運行。
;*
;* SRAM 中標志字節用法:
;*   入口標志:本子程序將檢查這三個標志,只有這三個標志置值后才允許處理數據。
;*               允許處理接收數據(DataUPD_RXALW)= $03(DataUPD_RDALWI)
;*               接收作業己更新(USARTAI_RXUPD)  = $0a(USARTAI_RUPDI)
;*               接收作業全部結束(USARTAI_RXEnd)= $0f(USARTAI_REndI)
;*   出口標志:接收數據處理操作得到執行后,將對下面這兩個標志置值。
;*               允許處理接收數據(DataUPD_RXALW)= $00
;*               接收作業己更新(USARTAI_RXUPD)  = $00
;*
;*******************************************************************************
USART_RXD_Data:
    lds ZL,DataUPD_RXALW            ;檢查是否允許處理接收數據?
    cpi ZL,DataUPD_RALWI              ;是,則繼續
    brne USART_RXD_Data_RET           ;否,直接返回
    lds ZL,USARTAI_RXUPD            ;檢查接收作業是否己更新?
    cpi ZL,USARTAI_RUPDI              ;是,則繼續
    brne USART_RXD_Data_RET           ;否,直接返回
    lds ZL,USARTAI_TXEnd            ;發送作業是否全部結束?
    cpi ZL,USARTAI_TEndI              ;是,繼續
    brne USART_RXD_Data_RET           ;否,返回,等待發送作業結束
    lds ZL,USARTAI_RXEnd            ;檢查接收作業是否全部結束?
    cpi ZL,USARTAI_REndI              ;是,則繼續
    brne USART_RXD_Data_Error         ;否,轉至接收錯誤處理
USART_RXD_Data_Check:
    ldi ZL,Low(USARTAI_RXDAA)       ;Z 指針指向接收數據的首字節
    ldi ZH,High(USARTAI_RXDAA)
    lds DCRC2B_DLength,USARTAI_RXDAA;置校驗的數據長度初值
    call DataCheck_CRC2B            ;校驗接收的數據是否正確?
    or YL,YH                          ;是,繼續
    brne USART_RXD_Data_Error         ;否,轉至接收錯誤處理
    rcall USART_TX_COMM_DataOK      ;向對方發送“接收數據正確”命令

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美一区二区精品性色| 国产精品网友自拍| 欧美在线一区二区三区| 成人精品国产一区二区4080| 国产精品77777竹菊影视小说| 黄一区二区三区| 国产成人一区在线| 国产成人免费在线| 国产 欧美在线| 成人av资源网站| 99精品偷自拍| 色婷婷精品久久二区二区蜜臂av| 色狠狠一区二区| 91精品久久久久久久久99蜜臂| 欧美二区三区的天堂| 日韩一区二区在线观看| 亚洲人成精品久久久久| 亚洲嫩草精品久久| 亚洲成人高清在线| 免费观看成人鲁鲁鲁鲁鲁视频| 久久99这里只有精品| 国产盗摄女厕一区二区三区| 99久久久精品| 777a∨成人精品桃花网| 久久久久久**毛片大全| 亚洲精品福利视频网站| 日韩av在线免费观看不卡| 国产精品一区二区果冻传媒| 99国产麻豆精品| 欧美一区二区三区免费在线看| 久久久久久久久久美女| 亚洲人成网站在线| 久久国产欧美日韩精品| 91在线丨porny丨国产| 欧美一区二视频| 国产精品女同一区二区三区| 亚洲国产精品一区二区久久| 国产在线乱码一区二区三区| 99久久er热在这里只有精品66| 6080yy午夜一二三区久久| 国产视频一区二区在线观看| 亚洲高清视频中文字幕| 国产精品一卡二卡在线观看| 精品视频一区二区三区免费| 国产午夜久久久久| 日本亚洲免费观看| 色婷婷综合激情| 国产欧美视频在线观看| 石原莉奈在线亚洲二区| 色综合久久久久综合体桃花网| 精品粉嫩超白一线天av| 五月天婷婷综合| 色综合天天视频在线观看| 久久久久久一二三区| 日本系列欧美系列| 欧美日韩一区二区三区在线看 | 91精品国产色综合久久不卡电影| 欧美激情一区在线观看| 精品一区二区日韩| 欧美性色欧美a在线播放| 国产精品毛片大码女人| 国产精品影视在线| 精品欧美乱码久久久久久1区2区| 亚欧色一区w666天堂| 91久久精品一区二区二区| 国产精品视频看| 成人三级伦理片| 日本一区二区成人| 国产91对白在线观看九色| 久久免费看少妇高潮| 国产一区二区精品久久91| 久久久久久久综合日本| 国产在线播精品第三| 日韩欧美国产综合| 久久激五月天综合精品| 精品国产一区二区精华| 黑人精品欧美一区二区蜜桃 | 欧美性大战久久久久久久| 亚洲免费伊人电影| 91在线视频官网| 一区二区三区欧美久久| 在线观看一区二区视频| 亚洲成年人影院| 欧美一级黄色大片| 激情图片小说一区| 国产精品二三区| 色视频一区二区| 亚洲成人三级小说| 精品久久一二三区| 成人app在线观看| 一级日本不卡的影视| 欧美一区二区三区人| 国产精品自拍一区| 中文字幕中文字幕在线一区| 色婷婷精品大视频在线蜜桃视频 | 首页国产欧美久久| 精品国产3级a| 99精品欧美一区二区三区小说 | 欧美日韩aaaaa| 免费的国产精品| 欧美韩国日本不卡| 欧美日韩一区二区三区四区五区| 国产精品日产欧美久久久久| 欧美熟乱第一页| 免费av成人在线| 欧美韩国日本一区| 精品视频999| 国产在线日韩欧美| 亚洲精品高清在线观看| 日韩欧美区一区二| 成人午夜av在线| 日韩成人一级片| 中文字幕一区在线| 日韩一级二级三级| 91在线观看免费视频| 九九视频精品免费| 一区二区三区波多野结衣在线观看| 欧美一级日韩免费不卡| 不卡高清视频专区| 日本一区中文字幕| 亚洲免费在线看| 久久久九九九九| 91精品国产91久久久久久一区二区 | 国产91在线|亚洲| 亚洲精品国产无套在线观| 久久久久国产精品人| 欧美日韩高清影院| 97久久精品人人爽人人爽蜜臀| 亚洲一区二区三区视频在线 | 69p69国产精品| 97精品国产97久久久久久久久久久久| 日本三级亚洲精品| 亚洲影视在线观看| 成人欧美一区二区三区视频网页 | 五月天网站亚洲| 一区二区三区四区视频精品免费 | 69精品人人人人| 欧洲av在线精品| 粉嫩久久99精品久久久久久夜| 青青草原综合久久大伊人精品优势| 亚洲精品自拍动漫在线| 国产精品久久久久久久久免费丝袜| 欧美成人精精品一区二区频| 欧美精品一二三| 欧美在线你懂的| 91婷婷韩国欧美一区二区| 国产成人免费在线观看| 国产麻豆日韩欧美久久| 国产麻豆欧美日韩一区| 精品一区二区免费视频| 精品一区二区三区久久| 国产一区二区三区四区五区入口| 日本v片在线高清不卡在线观看| 图片区日韩欧美亚洲| 天堂影院一区二区| 五月天丁香久久| 免费在线视频一区| 黑人巨大精品欧美一区| 国产精品亚洲专一区二区三区 | 日本美女一区二区三区| 日本女优在线视频一区二区| 午夜在线电影亚洲一区| 日韩不卡在线观看日韩不卡视频| 久久精品国内一区二区三区| 久久国产成人午夜av影院| 国内偷窥港台综合视频在线播放| 国产精品自在欧美一区| 成人h精品动漫一区二区三区| 99这里只有久久精品视频| 色88888久久久久久影院按摩| 欧美午夜不卡在线观看免费| 日韩欧美一区在线| 国产亚洲精品aa| 亚洲自拍偷拍图区| 奇米在线7777在线精品| 久久精品国产99国产| 国产成人aaa| 在线观看av一区二区| 欧美一级视频精品观看| 国产精品福利在线播放| 日韩精品三区四区| 成人免费毛片片v| 69成人精品免费视频| 国产欧美日韩不卡| 亚洲高清视频的网址| 国产精品香蕉一区二区三区| 欧美色大人视频| 国产欧美日韩在线视频| 亚洲午夜羞羞片| 国产伦精品一区二区三区免费迷 | 91香蕉视频黄| 欧美一二三在线| 自拍视频在线观看一区二区| 日韩av一区二区三区| 91理论电影在线观看| 久久午夜老司机| 欧美日韩国产另类一区| 久久久久久久av麻豆果冻| 亚洲一区在线视频| 成人毛片视频在线观看|