找回密码
 立即注册
查看: 739|回复: 7

一言难尽的STC8H串口问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-03-26 16:55:50

2

主题

6

回帖

36

积分

新手上路

积分
36
发表于 2024-3-25 11:17:30 | 显示全部楼层 |阅读模式
因为串口 转移I/O 后不能正常使用的问题,用ISP工具的例程单独测试一下。发现ISP下载成功一次后就不能下载了。。,以为芯片坏了,再试一下还这样。。;赶脚串口也被转移了。。

程序:

#include "reg51.h"
#include "intrins.h"

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

sfr     T4T3M   =   0xd1;
sfr     T4L     =   0xd3;
sfr     T4H     =   0xd2;
sfr     T3L     =   0xd5;
sfr     T3H     =   0xd4;
sfr     T2L     =   0xd7;
sfr     T2H     =   0xd6;
sfr     S3CON   =   0xac;
sfr     S3BUF   =   0xad;
sfr     IE2     =   0xaf;

sfr     P0M1    =   0x93;
sfr     P0M0    =   0x94;
sfr     P1M1    =   0x91;
sfr     P1M0    =   0x92;
sfr     P2M1    =   0x95;
sfr     P2M0    =   0x96;
sfr     P3M1    =   0xb1;
sfr     P3M0    =   0xb2;
sfr     P4M1    =   0xb3;
sfr     P4M0    =   0xb4;
sfr     P5M1    =   0xc9;
sfr     P5M0    =   0xca;
sfr     P_SW2       =   0xba;

bit busy;
char wptr;
char rptr;
char buffer[16];

void Uart3Isr() interrupt 17
{
    if (S3CON & 0x02)
    {
        S3CON &= ~0x02;
        busy = 0;
    }
    if (S3CON & 0x01)
    {
        S3CON &= ~0x01;
        buffer[wptr++] = S3BUF;
        wptr &= 0x0f;
    }
}

void Uart3Init()
{
    S3CON = 0x50;
    T3L = BRT;
    T3H = BRT >> 8;
    T4T3M = 0x0a;
    wptr = 0x00;
    rptr = 0x00;
    busy = 0;
}

void Uart3Send(char dat)
{
    while (busy);
    busy = 1;
    S3BUF = dat;
}

void Uart3SendStr(char *p)
{
    while (*p)
    {
        Uart3Send(*p++);
    }
}


void main()
{
    P0M0 = 0x00;
    P0M1 = 0x00;
    P1M0 = 0x00;
    P1M1 = 0x00;
    P2M0 = 0x00;
    P2M1 = 0x00;
    P3M0 = 0x00;
    P3M1 = 0x00;
    P4M0 = 0x00;
    P4M1 = 0x00;
    P5M0 = 0x00;
    P5M1 = 0x00;
        P_SW2 |= 0x02;                                                //UART3: RxD3(P5.0), TxD3(P5.1)
    Uart3Init();
    IE2 = 0x08;
    EA = 1;
    Uart3SendStr("Uart Test !\r\n");

    while (1)
    {;
        if (rptr != wptr)
        {
            Uart3Send(buffer[rptr++]);
            rptr &= 0x0f;
                                       
        }
    }
}

回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-03-26 16:55:50

2

主题

6

回帖

36

积分

新手上路

积分
36
发表于 2024-3-25 11:18:12 | 显示全部楼层
串口1 被转移了?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2024-3-25 11:52:04 | 显示全部楼层
ER*** 发表于 2024-3-25 11:18
串口1 被转移了?

芯片烧录运行的是芯片内部固化的系统ISP程序,跟用户程序没有关系。
而且芯片复位运行系统ISP程序时用户配置的寄存器也全部被复位了,所以用户程序不管怎么写,都不会影响到系统ISP程序的下载功能。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-03-26 16:55:50

2

主题

6

回帖

36

积分

新手上路

积分
36
发表于 2024-3-25 15:32:59 | 显示全部楼层
乘风*** 发表于 2024-3-25 11:52
芯片烧录运行的是芯片内部固化的系统ISP程序,跟用户程序没有关系。
而且芯片复位运行系统ISP程序时用户 ...

好巧不巧,下载器坏了,多谢大师答疑
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:403
  • 最近打卡:2025-05-02 11:18:12

0

主题

170

回帖

959

积分

高级会员

积分
959
发表于 2024-3-25 16:32:02 | 显示全部楼层
ISP不过是一段开机启动程序,还没有跑到用户代码区,串口是不会转移的。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-02 07:55:56
已绑定手机

19

主题

3190

回帖

4870

积分

论坛元老

积分
4870
发表于 2024-3-25 16:56:21 | 显示全部楼层
ISP引脚是固定的不会转移吧
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:395
  • 最近打卡:2025-05-02 05:31:55

16

主题

702

回帖

2474

积分

金牌会员

积分
2474
发表于 2024-3-25 19:44:45 | 显示全部楼层
so*** 发表于 2024-3-25 16:56
ISP引脚是固定的不会转移吧

ISP引脚是固定的不会转移
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:519
  • 最近打卡:2025-05-02 07:55:51
已绑定手机

46

主题

1694

回帖

2544

积分

金牌会员

积分
2544
发表于 2024-3-25 20:35:48 | 显示全部楼层
这锅背的
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 12:57 , Processed in 0.119914 second(s), 105 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表