SOGO論壇
  登入   註冊   找回密碼
查看: 2008|回覆: 15

[問題求助] 求達人為我解8051串列埠kill c的程式如何寫資料傳送 [複製連結]

狀態︰ 離線
發表於 2014-8-25 22:59:20 |顯示全部樓層
從8051端按按鈕透過串列埠傳送資料如下:
接收端鮑率9600

起始碼 數据長度 資料1 資料2 資料3 資料4 資料5 資料6 結束碼
7e         07      00      20     20    20     20    21     7e


該如何寫起,,,小弟初學....google遍地 ...找不到頪似教學......

Rank: 4

數位軟體勳章

狀態︰ 離線
發表於 2014-8-26 00:13:22 |顯示全部樓層
在此提供一範例供參考,希望能幫上忙!
  1. #include <reg52.h>

  2. #define uint  unsigned int
  3. #define uchar unsigned char

  4. void Delay(uint x)
  5. {
  6.         uchar i;
  7.         while(x--)
  8.         {
  9.                  for(i=0;i<120;i++);
  10.         }
  11. }

  12. void putc_to_SerialPort(uchar c)
  13. {
  14.         SBUF = c;
  15.         while(TI == 0);
  16.         TI = 0;
  17. }

  18. void puts_to_SerialPort(uchar *s)
  19. {
  20.         while(*s != '\0')
  21.         {
  22.                  putc_to_SerialPort(*s);
  23.                 s++;
  24.                 Delay(5);       
  25.         }
  26. }

  27. void main()
  28. {
  29.         uchar c = 0;
  30.         SCON = 0x40;
  31.         TMOD = 0x20;
  32.         PCON = 0x00;
  33.         TH1  = 0xfd;
  34.         TL1  = 0xfd;
  35.         TI   = 0;
  36.         TR1  = 1;
  37.         Delay(200);
  38.         puts_to_SerialPort("Receiving From 8051...\r\n");
  39.         puts_to_SerialPort("------------------------------\r\n");
  40.         Delay(50);
  41.         while(1)
  42.         {
  43.                 putc_to_SerialPort(c+'A');
  44.                 Delay(100);
  45.                 putc_to_SerialPort(' '); //這個地方『』間只能有且必須有一個空格
  46.                 Delay(100);
  47.                 if(c==25)
  48.                 {
  49.                          puts_to_SerialPort("\r\n---------------------------\r\n");
  50.                         Delay(100);
  51.                 }
  52.                 c = (c+1)%26;
  53.                 if(c%10==0)
  54.                 {
  55.                          puts_to_SerialPort("\r\n");
  56.                         Delay(100);
  57.                 }
  58.         }
  59. }
複製代碼
已有 1 人評分威望 收起 理由
紅塵孤鳥 + 2 感謝您熱心幫助會員解決問題,論壇需要您的.

總評分: 威望 + 2   查看全部評分

狀態︰ 離線
發表於 2014-8-26 06:11:56 |顯示全部樓層
@@"感謝達人為小弟指導,但……小弟看不大懂……對不起
可否指點 7e 07 00 20 20 20 20 21 7e 傳送這些資料 該怎麼起頭寫@@

Rank: 4

數位軟體勳章

狀態︰ 離線
發表於 2014-8-26 08:14:45 |顯示全部樓層
本人有在家開課,教授單晶片微電腦 MCU ATMEL AT89S52 & AVR ATmega16A
歡迎有興趣的朋友,私下和我聯絡;也有設計畢業專題 。

狀態︰ 離線
發表於 2014-8-26 12:20:49 |顯示全部樓層
怎麼聯絡你………畢業專題我倒是沒這問題,我只是想在家裡弄個想要的東西

狀態︰ 離線
發表於 2014-8-27 14:57:09 |顯示全部樓層


有人幫小弟一下嗎.....@@

Rank: 2

狀態︰ 離線
發表於 2014-9-2 17:36:12 |顯示全部樓層
要用軟體轉成HEX在傳送到單晶片

狀態︰ 離線
發表於 2014-9-10 09:00:03 |顯示全部樓層
本帖最後由 gouchse2 於 2014-9-17 16:05 編輯
smith20463 發表於 2014-9-2 17:36  
要用軟體轉成HEX在傳送到單晶片


......這我知道..........
我想要知道keil c 那部份怎麼寫...


#include <REG51.H>
void delayms(unsigned int time);
unsigned char code disp[9]={0x7e,0x07,0xa0,0x30,0x30,0x30,0x30,0x32,0x7e};
main()
{
  unsigned char j;

  TMOD=0x20;
  TH1=250;
  TL1=250;
  TR1=1;

  SCON=0x40;
  while(1){
  if(P0==0XFE)
  {
          for(j=0;j<9;j++)
          {
      TI=0;
      SBUF=disp[j] ;          
      while(TI==0);
          delayms(10);
      }
    }  }
}

void delayms(unsigned int time)
{
unsigned int n;
while(time>0)
{
n=120;
while(n>0) n--;
time--;
}}


哪裡出錯

Rank: 2

狀態︰ 離線
發表於 2014-9-11 02:32:28 |顯示全部樓層
gouchse2 發表於 2014-9-10 09:00  
......這我知道..........
我想要知道keil c 那部份怎麼寫...

看範例...那一套可以寫很多種...
8051範例網路上到處是  看要C還組合語言

狀態︰ 離線
發表於 2014-9-13 09:21:03 |顯示全部樓層
smith20463 發表於 2014-9-11 02:32  
看範例...那一套可以寫很多種...
8051範例網路上到處是  看要C還組合語言

.........謝謝您熱心回應....
但都沒幫助.....
請注意︰為維護論壇文章品質,任意「灌水回覆」可能導致您的帳號及所有文章被直接刪除!
您需要登錄後才可以回帖 登入 | 註冊


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

GMT+8, 2017-11-22 11:58

Powered by Discuz! X2 © 2001-2017 Comsenz Inc.
回頂部