全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2232
推到 Plurk!
推到 Facebook!

8051+RS232傳輸問題

缺席
a25821346
一般會員


發表:2
回覆:3
積分:1
註冊:2013-08-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2013-08-09 16:28:22 IP:61.20.xxx.xxx 訂閱
問一下我這樣寫對嗎??  這樣溫度會傳送出去嗎?

#include "reg51.h"
unsigned char xdata ADC_Port ;
int sample=5000;
char num=0;
unsigned char value;
unsigned char buffer[4]={0,0,0,0};
void convert(void);
void display(void);
main()
{
IE=0x83;
TMOD=0x01;
TR1=1;
PCON&=0x7F;
SCON=0x90;
TH0=(65536-5000)/256;
TL0=(65536-5000)%6;
TCON=0x01;
TR0=1;
P1=0xff;
ADC_Port=0;
while(1);
}
void EX0_int(void)interrupt 0
{
while(--sample==0)
{
sample=4000;
value=ADC_Port;
convert();
}
ADC_Port=0;
} /*EX0_INT*/
void T0_int(void)interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%6;
display();
}
void convert(void)
{
unsigned int temp;
temp=4*value;
buffer[0]=temp/1000;
buffer[1]=(temp00)/100;
buffer[2]=((temp00)0)/10;
buffer[3]=((temp00)0);
}
void display(void)
{
char i;
i=num;
i<<=4;
i =buffer[num];
P1=i;
num ;
if(num==4)
num=0;
}
void SCON_int(void)interrupt 4
{
if (T1==1)
T1=0;
P1=SBUF;
}
編輯記錄
a25821346 重新編輯於 2013-08-09 16:30:20, 註解 無‧
if8051
中階會員


發表:2
回覆:53
積分:61
註冊:2012-08-24

發送簡訊給我
#2 引用回覆 回覆 發表時間:2013-08-23 09:05:31 IP:114.40.xxx.xxx 訂閱
程式有問題?
程式中有使用 Timer 0 interrupt & UART interrupt
果真使用 UART interrupt ,石英震盪晶體要選用 11.0592 MHz,Baud Rate 9600 bps
和 PC 連。

既然有程式有硬體電路,應該自己下載程式先試試!練習除錯!針對不明白之處再發問,
如此才能得到最好的學習效果。
------
ATMEL AVR 單晶片設計開發 教學

工業電子 電機自動控制 設計 維修
a25821346
一般會員


發表:2
回覆:3
積分:1
註冊:2013-08-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2013-08-27 14:06:59 IP:61.20.xxx.xxx 訂閱
我是使用12M HZ的石英震盪器  那他
鮑率設在9600 我TH1要設217 對嗎??

因為我這樣設RS232模擬軟體好像沒接收到資料
if8051
中階會員


發表:2
回覆:53
積分:61
註冊:2012-08-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2013-08-28 08:34:09 IP:114.40.xxx.xxx 訂閱
  SCON = 0x50; // Mode 1 8 bit UART enable receive
TMOD = 0x20; // BaudRate Generator Timer 1 Mode 2 8 bit auto reload
TH1 = 0xFD; // crystal 11.0592 MHz 9600 bps
TR1 = 1; // start Timer 1
TI = 1; // write enable
------
ATMEL AVR 單晶片設計開發 教學

工業電子 電機自動控制 設計 維修
a25821346
一般會員


發表:2
回覆:3
積分:1
註冊:2013-08-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2013-09-09 16:35:35 IP:61.20.xxx.xxx 訂閱
我這樣打ok嗎?

void Uart_init(void)
{
PCON = 0x80;
SCON = 0x50;
TMOD = 0x20;
TH1 = 0xFD;
TR1 = 1;
TI = 1;
while(1)
{if (T1==1)
T1=0;
P1=SBUF;
)
}
===================引 用 if8051 文 章===================
SCON = 0x50; // Mode 1 8 bit UART enable receive
TMOD = 0x20; // BaudRate Generator Timer 1 Mode 2 8 bit auto reload
TH1 = 0xFD; // crystal 11.0592 MHz 9600 bps
TR1 = 1; // start Timer 1
TI = 1; // write enable
系統時間:2017-12-16 17:22:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!