久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2008|回復: 9
打印 上一主題 下一主題
收起左側

89c52單片機串口接收程序向stc8a8k64d4移植后沒有反應的問題

[復制鏈接]
跳轉到指定樓層
樓主
大佬們,之前我用51單片機弄了個串口接收(無反饋pc端,單接收)的程序。實驗效果是單片機接收到串口信號后反饋給P1的端口。然后對端口的高低電平來做判斷。后來換了STC8a的板子。然后接收程序不變,中斷程序按照燒錄軟件的例程復制過來。然而運行后一直沒有反應。之后一直改都亦是如此。我也是有點懵了。所以浪費大佬們的一點時間來幫我看看具體是什么問題...

程序如下:(已包括8a的頭文件)

#include "stc8aa.h"
#include "intrins.h"

#define FOSC            11059200UL
#define BRT             (65536 - FOSC / 115200 / 4)

sbit tx1=P2^0;

unsigned char Receive(void)
{
        unsigned char dat;
        while(RI==0);
                 RI=0;
                dat=SBUF;
                 return dat;
}

void Uart1_Init()                                                                    
{
                SCON = 0x50;
                TMOD = 0x20;
    TL1 = BRT;
    TH1 = BRT >> 8;
    TR1 = 1;
                REN=1;
    AUXR = 0x15;
}

void main()
{
    UartInit();
    ES = 1;
    EA = 1;
    P2M0 = 0x00;
    P2M1 = 0x00;
                P1=Receive();
                if(P1==0xfe)
                {
                        tx1=0;
                }
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1023753 發表于 2022-8-8 15:33 | 只看該作者
串口端口定義對不對,晶振頻率,波特率選擇對不對?
回復

使用道具 舉報

板凳
ID:639106 發表于 2022-8-8 19:57 | 只看該作者
應該是寄存器不同吧,stc8系列的寄存器·有些不同,需要按數據手冊進行調整
回復

使用道具 舉報

地板
ID:624769 發表于 2022-8-8 21:28 | 只看該作者
TMOD = 0x00;
回復

使用道具 舉報

5#
ID:155507 發表于 2022-8-8 22:00 | 只看該作者
STC8A 是 1T 單片機

  1. #include "reg51.h"
  2. #include "intrins.h"

  3. #define FOSC            11059200UL
  4. #define BRT             (65536 - FOSC / 115200 / 4)

  5. sfr     AUXR        =   0x8e;

  6. bit busy;
  7. char wptr;
  8. char rptr;
  9. char buffer[16];

  10. void UartIsr() interrupt 4
  11. {
  12.     if (TI)
  13.     {
  14.         TI = 0;
  15.         busy = 0;
  16.     }
  17.     if (RI)
  18.     {
  19.         RI = 0;
  20.         buffer[wptr++] = SBUF;
  21.         wptr &= 0x0f;
  22.     }
  23. }

  24. void UartInit()
  25. {
  26.     SCON = 0x50;
  27.     TMOD = 0x00;
  28.     TL1 = BRT;
  29.     TH1 = BRT >> 8;
  30.     TR1 = 1;
  31.     AUXR = 0x40;
  32.     wptr = 0x00;
  33.     rptr = 0x00;
  34.     busy = 0;
  35. }

  36. void UartSend(char dat)
  37. {
  38.     while (busy);
  39.     busy = 1;
  40.     SBUF = dat;
  41. }

  42. void UartSendStr(char *p)
  43. {
  44.     while (*p)
  45.     {
  46.         UartSend(*p++);
  47.     }
  48. }

  49. void main()
  50. {
  51.     UartInit();
  52.     ES = 1;
  53.     EA = 1;
  54.     UartSendStr("Uart Test !\r\n");

  55.     while (1)
  56.     {
  57.         if (rptr != wptr)
  58.         {
  59.             UartSend(buffer[rptr++]);
  60.             rptr &= 0x0f;
  61.         }
  62.     }
  63. }

復制代碼
回復

使用道具 舉報

6#
ID:195496 發表于 2022-8-9 09:08 | 只看該作者
新單片機是1T的,程序要修改才能用,涉及到有關波特率的寄存器
回復

使用道具 舉報

7#
ID:161164 發表于 2022-8-9 09:37 | 只看該作者
換芯片的時候要留意寄存器設置的分別
下面是STC89C的


下面是STC8的


你的代碼中有AUXR = 0x15;
選擇定時器2作為波特率發射器

但前幾句是定時器1的初始化
所以波特率不對


回復

使用道具 舉報

8#
ID:1034262 發表于 2022-8-9 09:59 | 只看該作者
STC8A8K64D4速度遠比STC89的快。波特率計算方法也不同,IO上電后是高阻,要設置。
回復

使用道具 舉報

9#
ID:1034262 發表于 2022-8-9 09:59 | 只看該作者
樓主可以取STC官網下載例子直接測試。
回復

使用道具 舉報

10#
ID:123289 發表于 2022-8-9 10:16 | 只看該作者
向7#多學習學習,學會查數據手冊。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | 日本一区二区不卡视频 | 91精品久久久久久久久久 | 亚洲欧美日韩国产 | 中文字幕亚洲一区二区va在线 | 欧美一级一 | 日韩欧美在线视频 | 日韩波多野结衣 | 成人国产在线视频 | 免费黄色大片 | 日日夜夜精品视频 | 午夜精品视频 | 亚洲高清在线观看 | 韩国电影久久 | 免费在线观看黄视频 | 亚洲免费一区二区 | 一级在线视频 | 国产精品嫩草影院精东 | 一区二区国产精品 | 国产99久久久国产精品 | 亚洲综合婷婷 | 亚洲精品一二三区 | 精品视频在线观看 | 国产精品亚洲精品 | www.亚洲 | 女同久久 | 精品久久久久久国产 | 欧美日韩不卡 | 久久中文字幕一区 | 国产欧美精品一区二区色综合朱莉 | 欧美影院 | 婷婷综合在线 | 欧美精品一区二区在线观看 | 少妇一级淫片aaaaaaaaa | 麻豆精品国产免费 | 久久专区| 伊人网在线播放 | 日韩中文字幕在线观看视频 | 国产高清视频一区 | 婷婷桃色网 | 久久国产电影 |