找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 25|回复: 1
打印 上一主题 下一主题
收起左侧

关于stc8H的延时函数问题

[复制链接]
跳转到指定楼层
楼主
本人最近在使用STC8H1K08芯片驱动TM1652,晶振是外部 12M
主要核心的驱动逻辑就是使用一根TX发数据给TM1652,不需要有数据回传,一直发就可以。但是由于最初设计时没有使用tx线,所以采用了io模拟tx的方式,19200的波特率用延时换算是52us,52us由stc-isp生成,目前遇到的问题是为什么这个延时不能正常点亮?
#include "main.h"

unsigned char LedSegs[]={63, 6, 91, 79, 102, 109, 125, 7, 127, 111, 119, 124, 57, 94, 121, 113};

void Delay52us(void)  //@12.000MHz
{
  unsigned char data i;

  i = 206;
  while (--i);
}

void sd1(unsigned char dat)
{
  unsigned int i=0;
  bit CY = 0,TB = 0;
  ACC = dat;
  if(P)
  {
    TB = 0;
  }
  else
  {
    TB = 1;
  }
  Tm1652_SDA=0;            //将串口发送端口TXD置高
  Delay52us();
  for(i= 0;i<8;i++)
  {
    Tm1652_SDA =  dat & 0x01;
    dat = dat>>1;
    Delay52us();
  }
  Tm1652_SDA = TB;      
  Delay52us();
  Tm1652_SDA=1;            //将串口发送端口TXD置高
  Delay52us();
}
void SendInt1(int ss){
  int qian,bai,shi,ge;
  qian = ss /1000;
  bai = ss / 100;
  shi = ss % 100 / 10;
  ge = ss % 10;

  sd1(LedSegs[qian]);
  sd1(LedSegs[bai]);  
  sd1(LedSegs[shi] | 0x80);
  sd1(LedSegs[ge]);
}
void main()
{
    P1M0 = 0x00;
    P1M1 = 0x00;
    while(1)
    {
      SendInt1(8888);
    }
}#ifndef _MAIN_H_
#define _MAIN_H

#include "STC8H.h"

sbit Tm1652_SDA = P1^3;

#endif



文件STC8H.h也是由stc-isp生成的头文件向各位大佬寻求帮助




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1133081 发表于 2026-7-9 15:47 | 只看该作者
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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