zty3512321 发表于 2024-6-6 14:17:38

STC8H3K32S2 串口发送0X44电脑接收到的是0x60 0xFE

因为需要用ADC所有这次用了STC8H3K32S2 20脚的调试串口的时候很奇怪我发0x44 电脑却接收到的是0x60 0xFE定时器1和2都试了 不行   STC8H1K08 20脚 的一样的程序是正常的   无语了来位大佬帮看看


#include "STC8H.H"
#define   MAIN_Fosc       12000000UL//define main clock
#define Timer0_Reload                 (65536UL -(MAIN_Fosc / 100))       //Timer 0 intrrrupt, 100/s
#define                BRT1152                        (65536UL -(MAIN_Fosc / 115200/4))
#define                BRT576                        (65536UL -(MAIN_Fosc / 57600/4))
#define                BRT384                        (65536UL -(MAIN_Fosc / 38400/4))
#define                BRT9600                        (65536UL -(MAIN_Fosc / 9600/4))



void UART1_init(void)
{

        P3M0 |=0x02;                                                                //P31, TXD
        P3M1 &=~0x02;               
        TXD= 1;       

        P3M1 |=0x01;                                                                //P30, RXD
        P3M0 &=~0x01;       

        P_SW2|=0X80;
        P_SW1 = 0x00;                                 //set
        SCON = 0x50;
    T2L = BRT9600;
    T2H = BRT9600 >> 8;
       
    AUXR |= 0x15;                        //timer2 1T mode, and start timer2                       
        ES=1;                        //ENABLE uart1 interrupt
}



void UART1_send(unsigned char dat)                        //   Uart1
{
       SBUF=dat;
       while(!TI);
       TI=0; // Clear TX flag
}



void main()
{
        init();
        LED_B = 0;
        LED_G = 0;
        LED_R = 0;       
        LED_Y = 0;
        delay_ms(500);
        LED_G = 1;
        LED_R = 1;       
        LED_Y = 1;
       
        UART1_init();
        delay_ms(100);
       
        while (1)
        {       
                LED_Y = 0;
                UART1_send(0x44);
                   delay_ms(100);
                LED_Y = 1;
                delay_ms(100);
        }
}

Lkck8210 发表于 2024-6-6 14:25:09

我也无语了,你为啥要用12000000?
串口通信一般推荐用11059200或其整倍数

zty3512321 发表于 2024-6-6 15:40:22

Lkck8210 发表于 2024-6-6 14:25
我也无语了,你为啥要用12000000?
串口通信一般推荐用11059200或其整倍数

这有啥关系?最多有点偏差   但是现在是出了2个字节而且8H1K08就是正常的如果3K32因为这个不行 这个就是单片机的问题

zty3512321 发表于 2024-6-6 15:55:07

Lkck8210 发表于 2024-6-6 14:25
我也无语了,你为啥要用12000000?
串口通信一般推荐用11059200或其整倍数

#define   MAIN_Fosc       11059200UL//define main clock
#define Timer0_Reload                 (65536UL -(MAIN_Fosc / 100))       //Timer 0 intrrrupt, 100/s
#define                BRT9600                        (65536UL -(MAIN_Fosc / 9600/4))


改了 还是一样 发44收60 FE

_奶咖君_ 发表于 2024-6-6 16:34:56

你下载程序的时候主频选择的正确吧

zty3512321 发表于 2024-6-6 17:00:13

_奶咖君_ 发表于 2024-6-6 16:34
你下载程序的时候主频选择的正确吧

正确的这个没问题 我只是不知道这2个芯片之间有什么特殊的差别导致这个原因

soma 发表于 2024-6-6 18:13:21

可以先下载例程检测一下。

zty3512321 发表于 2024-6-7 08:30:18

soma 发表于 2024-6-6 18:13
可以先下载例程检测一下。

我试过范例程序的 也是不行的 范例更加奇怪发的44结果显示发的0D 0A收的18 FE   论坛里面有STC的工程师吗?你们试试我现在就一个光板在测试电源都是usb电源

soma 发表于 2024-6-7 08:57:33

zty3512321 发表于 2024-6-7 08:30
我试过范例程序的 也是不行的 范例更加奇怪发的44结果显示发的0D 0A收的18 FE   论坛里面有STC的工 ...

你点发送回车当然是0D 0A了。

乘风飞扬 发表于 2024-6-7 09:09:07

zty3512321 发表于 2024-6-7 08:30
我试过范例程序的 也是不行的 范例更加奇怪发的44结果显示发的0D 0A收的18 FE   论坛里面有STC的工 ...

官方提供的例子都是测试过,而且经过很多用户验证的。
能不能详细介绍一下你用的是哪个例程包下的哪个例子进行的测试?
烧录到芯片前有修改过哪些地方?烧录时的硬件选项是如何设置的?
最好是直接使用例程原本的hex文件直接烧录测试,如果你的编译器有问题,就算什么都不改只是重新编译一次,生成的hex文件可能就会有问题。
页: [1] 2
查看完整版本: STC8H3K32S2 串口发送0X44电脑接收到的是0x60 0xFE