找回密码
 立即注册
查看: 194|回复: 10

关于S2CON, STC8H1K08T | 【ISP软件,范例程序】中有 串口2的演示程序

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-07-13 12:44:09
已绑定手机

2

主题

9

回帖

48

积分

新手上路

积分
48
发表于 2025-7-6 14:22:52 | 显示全部楼层 |阅读模式
大家好!

芯片STC8G1K08T芯片的S2CON始终为0X00,不能修改,是什么原因?
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-07-13 12:44:09
已绑定手机

2

主题

9

回帖

48

积分

新手上路

积分
48
发表于 2025-7-6 14:46:38 | 显示全部楼层
SCON能够改变;下面程序不能运行。

#include <stc8h.h>
void Uart2_Init(void)        //2400bps @11.0592MHz
{
               P_SW2 = 0x80;        //b7=1:允许访问RAM区的特寄存器 (8位模式请使用这句,注释上一句);默认值为0   

   
        S2CON = 0x50;       //8位数据,可变波特率;无法改变; B1111_1101  ???
        AUXR &= 0xFB;       //定时器时钟12T模式
        T2L = 0xA0;         //设置定时初始值
        T2H = 0xFF;         //设置定时初始值
        AUXR |= 0x10;       //定时器2开始计时
    //    EA = 1;           //总中断打开
    //    IE2 = 0;          //关闭串口2中断
}

void main(void)
{
        Uart2_Init();

        while(1){
        S2BUF = 0xA5;
        while (!(S2CON &0x02));   //清S2TI
        S2CON &= 0x0FD;               
        }
}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:145
  • 最近打卡:2025-08-01 10:06:57

762

主题

1万

回帖

1万

积分

管理员

积分
18302
发表于 2025-7-6 14:47:16 | 显示全部楼层
截图202507061445521214.jpg


截图202507061446329383.jpg

截图202507061447137825.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:145
  • 最近打卡:2025-08-01 10:06:57

762

主题

1万

回帖

1万

积分

管理员

积分
18302
发表于 2025-7-6 14:48:02 | 显示全部楼层
#include "reg51.h"
#include "intrins.h"

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

sfr     AUXR    =   0x8e;
sfr     T2H     =   0xd6;
sfr     T2L     =   0xd7;
sfr     S2CON   =   0x9a;
sfr     S2BUF   =   0x9b;
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;

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

void Uart2Isr() interrupt 8
{
    if (S2CON & 0x02)
    {
        S2CON &= ~0x02;
        busy = 0;
    }
    if (S2CON & 0x01)
    {
        S2CON &= ~0x01;
        buffer[wptr++] = S2BUF;
        wptr &= 0x0f;
    }
}

void Uart2Init()
{
    S2CON = 0x10;
    T2L = BRT;
    T2H = BRT >> 8;
    AUXR = 0x14;
    wptr = 0x00;
    rptr = 0x00;
    busy = 0;
}

void Uart2Send(char dat)
{
    while (busy);
    busy = 1;
    S2BUF = dat;
}

void Uart2SendStr(char *p)
{
    while (*p)
    {
        Uart2Send(*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;

    Uart2Init();
    IE2 = 0x01;
    EA = 1;
    Uart2SendStr("Uart Test !\r\n");

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


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:145
  • 最近打卡:2025-08-01 10:06:57

762

主题

1万

回帖

1万

积分

管理员

积分
18302
发表于 2025-7-6 14:51:41 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-07-13 12:44:09
已绑定手机

2

主题

9

回帖

48

积分

新手上路

积分
48
发表于 2025-7-6 18:51:01 | 显示全部楼层
谢谢!
你提供的程序存在同样的问题,S2CON寄存器的内容不能配置,始终为0,

截图202507061850228300.jpg
截图202507061850311661.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:145
  • 最近打卡:2025-08-01 10:06:57

762

主题

1万

回帖

1万

积分

管理员

积分
18302
发表于 2025-7-6 19:35:23 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:514
  • 最近打卡:2025-08-01 07:33:38
已绑定手机

87

主题

5776

回帖

1万

积分

超级版主

DebugLab

积分
10368
发表于 2025-7-7 08:37:47 | 显示全部楼层
8H上电高阻,你没有设置IO模式
可以看下我的串口程序(以串口1为例)
https://www.stcaimcu.com/thread-16321-1-1.html
以下是串口2程序:
初始化:

  1. P_SW2|=0x80;
  2. P0M0=0x00;
  3. P0M1=0x00;
  4. P1M0=0x00;
  5. P1M1=0x00;
  6. P2M0=0x00;
  7. P2M1=0x00;
  8. P3M0=0x00;
  9. P3M1=0x00;
  10. P4M0=0x00;
  11. P4M1=0x00;
  12. P5M0=0x00;
  13. P5M1=0x00;
  14. P6M0=0x00;
  15. P6M1=0x00;
  16. P7M0=0x00;
  17. P7M1=0x00;
  18. //IO模式根据需要设置
  19. P_SW2|=0x01;                                        //设置UART2端口为UART2_2
  20.         AUXR=0x15;                                                //设置定时器0为12T模式,设置定时器1为12T模式,使能定时器2,设置定时器2为1T模式
  21.         TMOD=0x00;                                                //设置定时器0为16位自动重载模式,设置定时器1为16位自动重载模式
  22.         TL0=0x00;                                                //设置定时器0初值(5ms)
  23.         TH0=0xDC;                                                //设置定时器0初值(5ms)
  24.         ET0=1;                                                        //使能定时器0中断
  25.         
  26.         SCON=0x50;                                                //UART1模式为8位数据,可变波特率
  27.         S2CON=S2REN;                                        //UART2模式为8位数据,可变波特率
  28.         T2L=BRT;                                                //设置波特率
  29.     T2H=BRT>>8;                                                //设置波特率
  30.         ES=1;                                                        //使能UART1中断
  31.         IE2|=ES2;                                                //使能UART2中断
  32. EA=1;                                                        //使能总中断
复制代码
中断:
  1. void Uart2_Isr(void) interrupt 8
  2. {
  3.         if(S2CON&S2RI)
  4.         {
  5.                 S2CON&=~S2RI;
  6.                 //接收
  7.         }
  8.         if(S2CON&S2TI)
  9.         {
  10.                 S2CON&=~S2TI;
  11.                 //发送
  12.         }
  13. }
复制代码

DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-07-13 12:44:09
已绑定手机

2

主题

9

回帖

48

积分

新手上路

积分
48
发表于 2025-7-7 13:10:44 | 显示全部楼层
STC8G1K08T几年前寄来的,是试制品?昨天新买两片不带T的,STC8H1K08及STC8G1K08能正常读写S2CON了
截图202507071310034865.jpg

点评

T不是触摸按键(Touch Key)??? 没听说过这个型号  详情 回复 发表于 2025-7-7 13:32
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:514
  • 最近打卡:2025-08-01 07:33:38
已绑定手机

87

主题

5776

回帖

1万

积分

超级版主

DebugLab

积分
10368
发表于 2025-7-7 13:32:16 | 显示全部楼层
姓*** 发表于 2025-7-7 13:10
STC8G1K08T几年前寄来的,是试制品?昨天新买两片不带T的,STC8H1K08及STC8G1K08能正常读写S2CON了 ...

T不是触摸按键(Touch Key)???
没听说过这个型号
DebugLab
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-8-1 11:35 , Processed in 0.130993 second(s), 101 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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