SOGO論壇
  登入   註冊   找回密碼
發表人: sss555
列印 上一主題 下一主題

[問題求助] 有關類比轉數位之程式 8051 ADC0804 RS232 請求達人幫助 [複製連結]

Rank: 2

狀態︰ 離線
跳轉到指定樓層
1
發表於 2011-11-7 21:28:09 |顯示全部樓層 |倒序瀏覽
小弟有個問題,想請各位達人 大師 幫忙ㄧ下
小弟卡在類比轉數位的8051以及AD0804、RS232之間不會溝通,8051程式碼在編譯的時候有誤 但是怎嚜找都找不到,望請各位大大幫忙ㄧ下 附上程式碼  還是小弟本身程式有誤,還請各位大大指教... 或者大大您可否幫寫程式,小弟我萬分感激 好人有好報啊

程式碼如下     
ORG 0000H
JMP START
ORG 0023H
JMP INTERR
START:
MOV SP,#70H
MOV DPTR,#TABLE
MOV 20H,#00H
MOV 21H,#00H
MOV IE,#10010000B
MOV SCON,#01110000B
MOV TMOD,#00100000B
MOV TH1,#0FDH
SETB TR1
MAIN:
CLR P1.7
ACALL DELAY
SETB P1.7
WAIT:
JB P1.6,WAIT
MOV A,P2
MOV B,A
SWAP A
ANL A,#00001111B
MOVC A,@A+DPTR
MOV DPTR,
MOV 20H,A
MOV A,B
ANL A,
MOVC A,@A+DPTR
MOV 21H,A
SETB TI
AJMP MAIN
INTERR:
PUSH A
JBC TI,TIINT
POP A
RETI
TIINT:
MOV A,20H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,21H
MOV SBUF,A
JNB TI,$
CLR TI
POP A
RETI
DELAY:
MOV R6,#20
DL1: MOV R7,#200
DJNZ R7,$
DJNZ R6,DL1
RET
TABLE:
DB 30H
DB 31H
DB 32H
DB 33H
DB 34H
DB 35H
DB 36H
DB 37H
DB 38H
DB 39H
DB 41H
DB 42H
DB 43H
DB 44H
DB 45H
DB 46H
END
喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

Rank: 2

狀態︰ 離線
2
發表於 2011-11-8 23:37:53 |顯示全部樓層
alphi 發表於 2011-11-7 22:17  
有考慮C語言嗎.這樣我可以幫你寫一下

好~大大感謝你了 小弟感激不盡

點評

alphi  大師不敢當,但是互相交流是不錯.技術這種東西是越交流越精進  發表於 2011-11-10 20:36:39
又靜  alphi 可是電子電機資訊館專業級的大師,有什麼問題可以回文提出來互相交流 ^^  發表於 2011-11-9 16:48:01

Rank: 2

狀態︰ 離線
3
發表於 2011-11-9 21:03:22 |顯示全部樓層
alphi 大師~ 這我從網上找到的  是能寫入8051上 但是我不曉得 為什麼RS232總是沒反應   在這感謝大大
程式如下
// Program to read the values of ADC and serially tranmitting it to PC.
#include<reg51.h>
sbit wr= P2^0;        // Write pin. It is used to start the conversion.
sbit rd= P2^1;        // Read pin. It is used to extract the data from internal register to the output pins of ADC.
sbit intr= P2^2;        // Interrupt pin. This is used to indicate the end of conversion. It goes low when conversion is complete.

void transmit()        // Function for serial tranmission of data.
{
    SBUF=P1;
    while(TI==0);
    TI=0;
}

void delay(unsigned int msec )        // The delay function provides delay in msec.
{
    int i ,j ;
    for(i=0;i<msec;i++)
        for(j=0; j<1275; j++);
}

void adc()        //Function to read the values from ADC and tranmit serially.
{
    rd=1;
    wr=0;
    delay(2);
    wr=1;
    while(intr==1);
    rd=0;
    transmit();
    delay(2);
    intr=1;
}

void init()        // Intialize timer 1 in mode 2 for serial transmission. The baud rate is set to 9600bps.
{
    TMOD=0x20;
    TH1=0xFD;
    SCON=0x50;
    TR1=1;
}

void main()
{
    P1=0xff;        // Declare P1 as input port.
    init();
    while(1)
    {
        adc();
    }
}

點評

sss555  大師 此軟體沒用過 我是用網路上所找的檢測RS232  發表於 2011-11-9 21:19:47
alphi  我回去幫你看一下 並且跑一下模擬 你有用過Proteus嗎  發表於 2011-11-9 21:13:30

Rank: 2

狀態︰ 離線
4
發表於 2011-11-9 21:17:33 |顯示全部樓層
大師 此軟體沒用過 我是用網路上所找的檢測RS232

Rank: 2

狀態︰ 離線
5
發表於 2011-11-10 22:11:54 |顯示全部樓層
感謝各位大的幫忙~目前小弟在努力的試~如還有需要幫忙我會告知~感謝各位
請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-5-31 03:41

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部