STC12C5A60S2雙串口使用程序_第1頁
STC12C5A60S2雙串口使用程序_第2頁
STC12C5A60S2雙串口使用程序_第3頁
STC12C5A60S2雙串口使用程序_第4頁
STC12C5A60S2雙串口使用程序_第5頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、STC12C5A60S2雙串口使用程序(已經(jīng)驗證成功)#include <stc12c5a60s2.h>#include "intrins.h"#define uchar unsigned char#define S2RI 0x01#define S2TI 0x02/串口 2 接收中斷請求標(biāo)志位串口 2 發(fā)送中斷請求標(biāo)志位/=/ 對于將 P4.4 、 P4.5 當(dāng)做 I/O 口使用必須添加的定義 /= sfr p4sw=0xbb;用)|/需在主函數(shù)文件中做相應(yīng)設(shè)置4、5、6 為 1(作為 I/O 口使/*sbit butto n1=P "3; sbit

2、 butt on 2=卩4人4; sbit butto n3=P 4人5;sbit butto n4=卩4人6;*/uchar code temp1=" uchar code temp2=" uchar code temp3=" uchar code temp4="白云:黑土:八、I_* 小崔:觀眾:我可是個名人” " 啥名人啊,你就是個人名” 誒,大叔大媽,你倆都冷靜冷靜” 哈哈哈哈” """/*void delay_1ms(uchar ii)unsigned char a,b;for(; ii>0; ii

3、-) for( b = 18; b>0; b-) for( a = 152; a>0; a-);_nop_(); /if Keil,require use intrins.h void delay1s(void) / unsigned char a,b,c;for( c = 212; c>0; c-)for( b = 160; b>0; b-)for( a = 80; a>0; a-);_nop_(); /if Keil,require use intrins.h_nop_(); /if Keil,require use intrins.h */誤差 -0.us誤

4、差 -0.5us/*串口通信部分 *uchar wj_uun = '!'/uchar wj_uun2 = '?'用于存放串口 1 接收的字符 / 用于存放串口 2 接收的字符void bt_uart_init()/SCON=0X50;SM0 = 0;允許串口接收SM1 = 1;REN = 1;/RI=1; /TMOD = 0X20;TH1 = 0XFD;TL1 = 0XFD;TR1 = 1;EA = 1;ES = 1;/單片機雙串口初始化/ SM0=0 SM1=1 SM2=0 REN=1/ 串口工作方式 1:1 位起始位, 8 位數(shù)據(jù)位, 1 位停止位/ 允許串

5、口接收接收標(biāo)志位, 0:正在接收 1 :接收完畢 ( 如果 RI=1 就一直執(zhí)行串口中斷 )定時器 T1 工作方式 2下的定時器初值/ 9600bit/s/啟動定時器 T1 開總中斷 開串行口中斷/S2CON = 0x50;S2REN=1允許接收BRT = 0XFD;AUXR =0x10;始計數(shù),S2SMOD=0波特率不加倍,IE2 = 0x01;/ 9600bit/s/串口 2 工作在方式 1 10 位異步收發(fā) S2SM0=0 S2SM1=1下的獨立波特率發(fā)生器初值 輔助寄存器 :0001 0000 ->BRTR=1: 獨立波特率發(fā)生器開BRTx12=0:獨立波特率每12個時鐘計數(shù)一次

6、開串口 2 中斷 0000 0001->ES2=1/ AUXR1 = 0x10;/ 0001 0000->S2_P4=1:UART2從 P1TxD2:P1.3)切換到 P4 口(RxD2:P42 TxD2:P4.3)否則默認(rèn)都為 P1 口口 (RxD2:P1.2/* 串口 1 發(fā)送函數(shù) void s1_send_char(uchar dat) /*/發(fā)送端 ( 發(fā)送的是字符 )SBUF = dat; while(!TI);TI = 0;/ TI/將字符送入發(fā)送緩沖寄存器為發(fā)送狀態(tài)標(biāo)志位, 0:發(fā)送中 手動清零標(biāo)志位1 :發(fā)送結(jié)束void s1_send_string(uchar *

7、pt)/通過調(diào)用發(fā)送字符函數(shù)來發(fā)送字符數(shù)組while(*pt != '0')s1_send_char(*pt+);/*串口 2 發(fā)送函數(shù)void s2_send_char(uchar dat2) S2BUF = dat2; while(!(S2CON&S2TI);發(fā)送結(jié)束S2CON &= S2TI;void s2_send_string(uchar *pt2) while(*pt2!='0')/*/發(fā)送端 ( 發(fā)送的是字符 )將字符送入串口 2 的發(fā)送緩沖寄存器 判斷發(fā)送是否結(jié)束: S2CON.bit2 = 0:發(fā)送中 1 :手動清零標(biāo)志位,令

8、S2CON.bit2 = 0通過調(diào)用發(fā)送字符函數(shù)來發(fā)送字符數(shù)組s2_send_char(*pt2+);/*void bt_serial_1()if(RI)RI=1 就一直執(zhí)行中斷串口 1 中斷程序interrupt 4 /)RI = 0; wj_uun = SBUF;/串口 2 中斷程序 interrupt 8 /*void bt_serial_2() if(S2CON&S2RI) / 收完畢 ( 如果 RI=1 就一直執(zhí)行中斷S2CON &= S2RI;wj_uun2 = S2BUF;/void main(void)bt_uart_init(); p4sw = 0x70;while(1)*/中斷編號 4 為串行口 1 中斷接收標(biāo)志位, 0:正在接收 1 :接收完畢 (同樣需要手動清零將接收緩沖器接收的字符送入變量中*/中斷編號 8 為串行口 2 中斷/*if(wj_uun != '!')s1_send_char(wj_uun); / wj_uun = '!'*/ if(wj_uun2 != '?') 如果接收標(biāo)志位 : S2CON.bit1 = 0:正在接收 1同樣需要手動清零,令 S

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論