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

麻煩各位大大幫幫看一下我頭腦快爆炸了R232對8051 RI TI傳輸問題

尚未結案
killer_987
一般會員


發表:1
回覆:0
積分:0
註冊:2013-03-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2013-03-17 00:00:03 IP:118.160.xxx.xxx 訂閱
#include "..\MPC82.H"   //暫存器及組態定義
void LCD_init(void);
void LCD_Cmd(unsigned char Cmd);
void LCD_wait(void);
void LCD_Data(unsigned char dat);
void LCD_Disp(unsigned int disp);
void LCD_Cmd_Init(unsigned char Cmd);
void UART_init(unsigned int bps);
void uart_string(void);
unsigned char cmd_ecread[5]={0x68,0x04,0x00,0x01,0x07};
unsigned char ec_buf[7];
unsigned int ecompass;
unsigned char index;
unsigned char i,j,s;
bit ready;
main()
{
UART_init(9600);
LCD_init();
LCD_Cmd(0x80); //游標由第一行開始顯示
LCD_Cmd(0x0f);//*0000 1111,顯示幕ON,顯示游標,游標閃爍
LCD_Cmd(0x80); //游標由第一行第1字開始顯示
EA=1;ES=1; //致能串列中斷 */
while(1)
{
uart_string();
loop:
while(ready)
{ LCD_Cmd_Init(0x01);
LCD_Cmd_Init(0x02);
ecompass=(ec_buf[4]*100) ((ec_buf[5]&0xf0)>>4)*10 (ec_buf[5]&0x0f);
LCD_Disp(ecompass);
ready=0;
}
goto loop;
}}
void LCD_Data(unsigned char dat)
{
unsigned char dly=2;
Data=dat;
RS=1;RW=0;EN=1;
while(dly--);
EN=0;
LCD_wait();
}
void LCD_Cmd(unsigned char Cmd)
{
unsigned char dly=2;
Data=Cmd;
RS=0;RW=0;EN=1;
while(dly--);
EN=0;
LCD_wait();
}
void LCD_init(void)
{
LCD_Cmd_Init(0x38);
LCD_Cmd_Init(0x38);
LCD_Cmd_Init(0x38);
LCD_Cmd_Init(0x0c);
LCD_Cmd_Init(0x06);
LCD_Cmd_Init(0x01);
LCD_Cmd_Init(0x02);
}
void LCD_wait(void)
{
unsigned char status;
Data=0xff;
do
{
RS=0;RW=1;EN=1;
status= Data;
EN=0;
}
while(status & 0x80);
}
void UART_init(unsigned int bps)
{
P0M0=0; P0M0=0xFF;
SCON = 0x50;
TMOD = 0x20;
TH1=TL1=256-(57600/bps);
TR1 = 1;
}
void LCD_Disp(unsigned int disp)
{
if(disp>99) LCD_Data(disp/100 '0');
if(disp>9) LCD_Data(disp0/10 '0');
LCD_Data(disp '0');
}
void LCD_Cmd_Init(unsigned char Cmd)
{
Data=Cmd;
RS=0;RW=0;EN=1;
Delay_ms(1);
EN=0;
Delay_ms(1);
}
void SCON_int(void) interrupt 4
{
if(RI==1) //若是因為接收所產生的中斷
{
RI=0; //接收完畢,令RI=0
ec_buf[index] = SBUF;
if (index == 6)
{
index = 0;
ready = 1;
}
else
index ;
}
else TI=0;
}
void uart_string(void)
{
for(s=0;s<5;s )
{
SBUF=cmd_ecread[s]; //Send 1 byte of string
while(TI==0); //Wait for completion
TI=0 ;
}
}
為什麼我的發射 cmd_ecread[5]={0x68,0x04,0x00,0x01,0x07};不是我要的資料有圖
------
鄭伊健
naga88
一般會員


發表:0
回覆:13
積分:7
註冊:2008-06-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2013-03-20 11:42:26 IP:211.20.xxx.xxx 訂閱
void UART_init(unsigned int bps)
{
P0M0=0; P0M0=0xFF;
SCON = 0x50;
TMOD = 0x20;
TH1=TL1=256-(57600/bps);
TR1 = 1;
}

在上面裡 在加行 PCON=0X80 ;
------
http://tw.myblog.yahoo.com/naga_tooru
系統時間:2024-04-18 18:21:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!