freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)論文單片機(jī)msp430與pc機(jī)串口通訊設(shè)計(jì)-wenkub.com

2024-11-03 23:05 本頁(yè)面
   

【正文】 32 程序設(shè)計(jì) 167。 22 單片機(jī)電路設(shè)計(jì) 167。 311 上位機(jī)和下位機(jī)實(shí)現(xiàn)的功能 19 一功能描述 19 167。 211 RS232 接口電路設(shè)計(jì) 14 167。 11 系統(tǒng)組成及通訊原理 7 167。 111 系統(tǒng)構(gòu)成 7 167。 22 單片機(jī)電路設(shè)計(jì) 17 167。 32 程序設(shè)計(jì) 19 167。 221 單片機(jī)電路設(shè)計(jì)圖 單片機(jī)電路比較簡(jiǎn)單在與接口電路連接的的基礎(chǔ)上分別采用單片機(jī)的一般IO 接口實(shí)現(xiàn)與其他電路的連接由于是多路通信所以每一路的硬 件設(shè)計(jì)基本相同下面為單片機(jī)部分電路圖 圖 23 單片機(jī)部分電路圖 由圖 23 可以看出在單片機(jī)的時(shí)鐘設(shè)計(jì)上與其他的單片機(jī)有一定區(qū)別MSP430F149單片機(jī)采用兩個(gè)時(shí)鐘輸入一個(gè) 32KHZ的時(shí)鐘信號(hào)一個(gè) 8MHZ的時(shí)鐘信號(hào)該系統(tǒng)的時(shí)鐘信號(hào)都是采用晶體振蕩器實(shí)現(xiàn)的考慮到電源的輸入波紋對(duì)單片機(jī)的影響在電源的管腳增加一個(gè) 01μ F 的電容來(lái)實(shí)現(xiàn)濾波以減小輸入端受到的干擾另外單片機(jī)還有模擬電源的輸入端所以這里需要考慮干擾問(wèn)題在該系統(tǒng)中的干擾比較小因此模擬地和數(shù)字地共地模擬電源輸入端增加一個(gè)濾波電容以減小干擾 [10] 第三章 軟件設(shè)計(jì) 167。 321 下位機(jī)程序設(shè)計(jì) 一下位機(jī)通訊協(xié)議 分布式控制系統(tǒng)中的下位機(jī)的每臺(tái)單片機(jī)均 有唯一的地址通信開(kāi)始時(shí)先由PC機(jī)呼叫被叫單片機(jī)的地址單片機(jī)在接收到 PC機(jī)的呼叫后首先判斷是不是自己的地址如果不是就不予理睬如果是則發(fā)送呼叫應(yīng)答信號(hào)并根據(jù)上位機(jī)的命令進(jìn)行相應(yīng)的接收或發(fā)送 根據(jù)以上要求以及 UART 通信協(xié)議基本內(nèi)容可以將下位機(jī)通信協(xié)議設(shè)置如下表 表 31 下位機(jī)通訊協(xié)議格式 地 址 數(shù) 據(jù) 結(jié)束 地址取值 18 即上位機(jī)可以呼叫的 8 個(gè)下位機(jī)之一發(fā)送時(shí)地址位有效 數(shù)據(jù)取值 9127 為 ASCⅡ 可顯示字符 結(jié)束 0 二下位機(jī)程序流程圖 下位機(jī)單片機(jī)程序設(shè)計(jì)包括初始化設(shè)計(jì)串口中斷服務(wù)設(shè)計(jì)和主處理 程序設(shè)計(jì)本例雖然有多個(gè)下位機(jī)但他們除了本機(jī)地址的設(shè)置不同外其他硬件電路都是相同的所以各下位機(jī)的軟件設(shè)計(jì)也是相同的按照通信協(xié)議的要求可以設(shè)計(jì)出如圖 31 的下位機(jī)程序流程 圖 31 下位機(jī)單片機(jī)主程序流程圖 三初始化設(shè)置 初始化設(shè)置包括時(shí)鐘初始化端口初始化和串口初始化 1 時(shí)鐘初始化程序及說(shuō)明 include include UARTh void Init_CLK void unsigned int i BCSCTL1 0X00 將寄存器的內(nèi)容清零 XT2 震蕩器開(kāi)啟 LFTX1 工作在低頻模式 ACLK 的分頻因子為 1 do IFG1 ~ OFIFG 清除 OSCFault 標(biāo)志 for i 0x20i 0i while IFG1 OFIFG OFIFG 如果 OSCFault 1 BCSCTL2 0x00 將寄存器的內(nèi)容清零 BCSCTL2 SELM1 MCLK 的時(shí)鐘源為 TX2CLK 分頻因子為 1 BCSCTL2 SELS SMCLK 的時(shí)鐘源為 TX2CLK 分頻因子為 1 由上面的程序可以知道只要設(shè)置 BCSCTL1和 BCSCTL2寄存器的相應(yīng)位就可以獲得需要的 MCLKSMCLK 和 ACLK 的時(shí)鐘信號(hào) 2 端口初始化 void Init_Port void 將所有的管腳在初始化的時(shí)候設(shè)置為輸入方式 P3DIR 0 將所有的管 腳設(shè)置為一般 IO 口 P3SEL 0 return 上面的初始化程序?qū)?P3 口初始化為一般的 IO 接口 3 串口初始化 由于串口 1UART1 的管腳號(hào)為 P36 和 P37 端口初始化只是將端口設(shè)置為一般的 IO接口而本設(shè)計(jì)里需要將 P36和 P37作為 UART的輸出和輸入管腳所以這里需要對(duì)其另外初始化 UART1 的初始化程序代碼為 void Init_UART1 void U1CTL 0X00 將寄存器的內(nèi)容清零 UCTL1 ~ SWRST SWRDT 復(fù)位 UART 允許 UCTL1 CHARMM 8 位數(shù)據(jù)位 1 位停止位地址位模式 URCTL1 URXWIE 只有地址字符使 URXIFG 置位 UBR0_1 0X03 UBR1_1 0X00 UMCTL_1 0X4A 使用 32KHz 晶振時(shí)波特率為 9600bps U1TCTL 0x10 選定 ACLK32KHz 晶振為時(shí)鐘源 ME2 UTXE1 URXE1 使能 UART1 的 TXD 和 RXD IE2 URXIE1 使能 UART1 的 RX 中斷 IE2 UTXIE1 使 能 UART1 的 TX 中斷 P3SEL BIT6 設(shè)置 P36 為 UART1 的 TXD P3SEL BIT7 設(shè)置 P37 為 UART1 的 RXD P3DIR BIT6 P36 為輸出管腳 return 根據(jù)硬件設(shè)置的要求上面的程序設(shè)置了串口 1的參數(shù)比如 8位數(shù)據(jù)位 1位停止位地址位多機(jī)模式波特率發(fā)生器選擇 ACLK波特率為 9600波特秒等將 P36和 P37 設(shè)置為串口 1 的 IO 管腳 四串口中斷服務(wù)程序 串口接收和發(fā)送都采用中斷方式設(shè)計(jì)單片機(jī)通信程序時(shí)必須充分發(fā)揮單片機(jī)的 效率由于單片機(jī)多應(yīng)用于實(shí)時(shí)性較強(qiáng)的控制場(chǎng)合因此 應(yīng)將及時(shí)響應(yīng)和控制對(duì)象的動(dòng)作放在優(yōu)先考慮的位置以盡量減少通信等輔助性操作所占用的 CPU 時(shí)間基于上述考慮在設(shè)計(jì)單片機(jī)通信程序時(shí)將程序分為接收中斷程序和發(fā)送中斷程序 2 部分 interrupt [UART1RX_VECTOR] void UART1_RX_ISR void if URCTL1URXWIE 接收為地址方式時(shí)等待正確的地址出現(xiàn) if URBUF_1 ADDRESS 地址正確改變接收為數(shù)據(jù)方式準(zhǔn)備接收 URCTL1 ~ URXWIE nRX1_Len_temp 0 else 接收為數(shù)據(jù)時(shí) UART1_RX_BUF[nRX1_Len_temp] RXBUF1 數(shù)據(jù)存入 UART1_RX_BUF 里 nRX1_Len_temp 1 if UART1_RX_BUF[nRX1_Len_temp ] 0 是否到達(dá)停止位 nRX1_Len nRX1_Len_temp nRev_UART1 1 設(shè)置標(biāo)志來(lái)通知主程序 nRX1_Len_temp 0 URCTL1 URXWIE 數(shù)據(jù)收完改變?yōu)榈刂贩绞? 對(duì)于接收中斷程序處于等待狀態(tài)當(dāng)外面有數(shù)據(jù)到來(lái)時(shí)則觸發(fā)接收進(jìn)入接收中斷服務(wù)程序當(dāng)?shù)刂夫?yàn)證正確開(kāi)始后面的數(shù)據(jù)中斷從 RxBUF1 寄存器里讀取數(shù)據(jù)將讀到的數(shù)據(jù)放到 UART1_RX_BUF[ ]全局緩沖區(qū)里在接收數(shù)據(jù)之后設(shè)置一個(gè)標(biāo)志 nRev_UART1 來(lái)通知主程序完成后等待下一中斷的到來(lái)接收中斷服務(wù)程序包含了對(duì)地址位是 否匹配的驗(yàn)證 2 發(fā)送中斷服務(wù)程序 當(dāng)主程序有數(shù)據(jù)要發(fā)送時(shí)設(shè)置一個(gè)中斷標(biāo)志進(jìn)入中斷并發(fā)送數(shù)據(jù)下面為程序代碼 interrupt [UART1TX_VECTOR] void UART1_TX_ISR void if nTX1_Len 0 nTX1_Flag 0 表示緩沖區(qū)里的數(shù)據(jù)沒(méi)有發(fā)送完 TXBUF1 0x01 先寫入地址字符 TXBUF1 UART1_TX_BUF[nSend_TX1] 開(kāi)始傳輸數(shù)據(jù) nSend_TX1 1 if nSend_TX1 nTX1_Len 數(shù)據(jù)是否發(fā)送完 nSend_TX1 0 nTX1_Len 0 nTX1_Flag 1 緩沖區(qū)里沒(méi)有數(shù)據(jù)要發(fā)送了 對(duì)于發(fā)送中斷程序一般處于禁止等待狀態(tài)只有當(dāng)單片機(jī)的發(fā)送緩沖區(qū)歷由數(shù)據(jù)需要發(fā)送并將發(fā)送中斷置為允許方式后發(fā)送中斷才開(kāi)始工作發(fā)送時(shí)從緩沖區(qū)里發(fā) 送數(shù)據(jù)遵守通訊協(xié)議首先發(fā)送地址位然后發(fā)送需要傳輸?shù)臄?shù)據(jù)最后發(fā)送校驗(yàn)以及結(jié)束標(biāo)志在發(fā)送中斷服務(wù)程序里從 UART1_TX_BUF[ ]全局緩沖區(qū)里取出數(shù)據(jù)給 TXBUF1 寄存器進(jìn)行發(fā)送發(fā)送完后發(fā)送中斷服務(wù)程序等待下一中斷的到來(lái) 以上兩程序可以看出采用中斷有很好的結(jié)構(gòu)只要在中斷服務(wù)程序里理接收和發(fā)送數(shù)據(jù)然后與主程序進(jìn)行數(shù)據(jù)交換易實(shí)現(xiàn)多任務(wù)操作很好利用單片機(jī)資源 五主處理程序 主處理程序包含初始化設(shè)置串口工作方式對(duì)接收到的數(shù)據(jù)進(jìn)行處理以及封裝需要發(fā)送的數(shù)據(jù)下面是它的程序代碼 include include sp3220h 定義串口操作變量 char nRev_UART1 串口 1 的接收標(biāo)志 char UART1_TX_BUF[60] 串口 1 的發(fā)送緩沖區(qū) char UART1_RX_BUF[60] 串口 1 的接收緩沖區(qū) int nTX1_Len char nRX1_Len char nRX1_Len_temp char nTX1_Flag int nSend_TX1 void main void int nRes_UART1 int nRes 0 char UART1_RX_Temp[60] int i int n WDTCTL WDTPW WDTHOLD 關(guān)閉看門狗 _DINT 關(guān)閉中斷 Init_CLK 初始化時(shí)鐘 Init_Port 初始化端口 Init_UART1 初始化串口 1 _EINT 打開(kāi)中斷 for 進(jìn)入處理循環(huán) if nRev_UART1 1 如果有接收中斷 nRev_UART1 0 for i 0i nRX1_Leni UART1_RX_Temp[i] UART1_RX_BUF[i] 將接收到的數(shù)據(jù)拷貝到臨時(shí)緩沖區(qū) nRes ProcessCMD UART1_RX_TempnRX1_Len switch nRes case 1 UART1_TX_BUF[0] O UART1_TX_BUF[1] K UART1_TX_BUF[2] 13 nTX1_Len 3 設(shè)置中斷標(biāo)志進(jìn)入發(fā)送中斷程序 IFG2 UTXIFG1 nRX1_Len 0 break case 2 for n 0n nRX1_Lenn UART1_TX_BUF[n] UART1_RX_Temp[n] UART1_TX_BUF[nRX1_Len] O UART1_TX_BUF[nRX1_Len1] K UART1_TX_BUF[nRX1_Len2] 13 nTX1_Len nRX1_Len 3 設(shè)置中斷標(biāo)志進(jìn)入發(fā)送中斷程序 IFG2 UTXIFG1 nRX1_Len 0 break case 1 UART1_TX_BUF[0] E UART1_TX_BUF[1] R UART1_TX_BUF[2] R UART1_TX_BUF[3] O UART1_TX_BUF[4] R UART1_TX_BUF[5] 13 nTX1_Len 6 設(shè)置中斷標(biāo)志進(jìn)入發(fā)送中
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1