8051將外部記憶體的資料經串列阜顯示在電腦上 |
尚未結案
|
lori00024
一般會員 發表:1 回覆:0 積分:0 註冊:2009-11-20 發送簡訊給我 |
你好,各位8051高手!!
1、我要利用8051的計數器功能去計數P3.5這一隻訊號腳的第一個 5V到第二個 5V的時間。 2、P3.5接的是一個近接開關的OUTPUT腳,近接開關為一個1-bit 的數位輸出訊號。 3、將計數到的時間,存進外部記憶體SRAM(62256)內, 在將外部記憶體內的data顯示到pc上。 我的想法是,近接開關訊號腳名稱為SIGNAL_IN 當第一個SIGNAL_IN進來時 (SIGNAL_IN=1)時,啟動計數器(TR0=1) 當第二個SIGNAL_IN進來時 (SIGNAL_IN=1)時,關閉計數器(TR0=0) 將值依序丟入SRAM內,進而顯示到PC 我現在遇到的問題是: 我是先測試取值的部份,先將取到的時間利用8顆led燈顯示出來。結果是值有出來在led燈上。 再來就在程式及電路加上外部記憶體和串列阜的部份,結果在pc上卻顯示亂碼.............???? 我找好久~~~找不出問題在哪裡....... 各位高手幫幫忙........... 以下是我的程式 #include //#include sbit SIGNAL_IN =P3^5; //近接開關訊號 sbit sled =P1^1; //工作燈1 sbit wled =P3^6; //工作燈2 unsigned char data TH_BUF; unsigned char data TL_BUF; unsigned int count_1=0 ; //計算計數溢位 char xdata SRAM[21845]; //宣告外部記憶體位址 char i; //串列初始 //--------------------------------------------------- void init_UART(unsigned int baudrate) { SCON=0x53; TMOD=0x21; PCON=0x80; //SMOD=1 - Baudrate Double TH1=256-(28800/baudrate); TL1=TH1; TR1=1; } //串列傳送資料 //--------------------------------------------------- void Outp(unsigned char c) { SBUF=c; while(TI == 0); TI=0; } //串列接收資料 //------------------------------------------------------ unsigned char Inp(void) { char c; while(!RI); //判斷是否有資料接收 RI=0; //RI旗標歸0 c=SBUF; return (c); } //Delay----------------------------------------------- void Delay(unsigned char count) { unsigned char i,j; //delay8.8us for(i=0;i } //Timer-0 初值設定 //---------------------------------------------------- void SET_T0() //計數近接開關觸碰次數 { TH0=(65536-65536)/256; //設定TH0 初值 TL0=(65536-65536)%6; //設定TL0 初值 } //---------------------------------------------------- main() { unsigned char test=0; init_UART(); IE=0x80; SET_T0(); TF0 =0; count_1 = 0; sled = 0; for(i=0;i<=21845;i ) { if(TF0==1) { count_1 ; SET_T0(); TF0 =0; } if(SIGNAL_IN && test) { if(count_1>1) { TR0 = 0; TF0 = 0; sled = ~sled; test = ~test; SRAM[i]= ~count_1; wled=~wled; Outp(SRAM[i]); SET_T0(); count_1= 0; Delay(100); } } if(SIGNAL_IN && ~test) { TR0 =1 ; test = ~test; sled= ~sled; Delay(100); } } } |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |