找回密码
 立即注册
×

00:00:00

您有一张0.1元限时体验卡,马上领取获得VIP尊享特权。

串口打印

2025-12-9 22:50 来自 uutamiwn 发布 @ 综合讨论

123878串口输出乱码 。123879#include "STC8Hxxxxx.h"
#include <intrins.h>
#include <absacc.h>
#include <string.h>
#include <stdarg.h>
#include <stdio.h>
#include <math.h>

        #define                TKC                P00                //        0        高阻
        #define                TKD                P01                //        0        高阻
        #define                TKE                P02                //        0        高阻
        #define                TKF                P03                //        0        高阻
//        #define                NC                P04                //        0        高阻
//        #define                NC                P05                //        0        高阻
        #define                NTC                P06                //        0        高阻
        #define                BUZ                P07                //        0        推挽

        #define                TK0                P10                //        0        高阻
        #define                TK1                P11                //        0        高阻
//        #define                NO                P12                //        0        高阻
        #define                TK3                P13                //        0        高阻
        #define                TK4                P14                //        0        高阻
        #define                TK5                P15                //        0        高阻
        #define                TK6                P16                //        0        高阻
        #define                TK7                P17                //        0        高阻

        #define                COM0        P20                //        0        推挽
        #define                COM1        P21                //        0        推挽
        #define                COM2        P22                //        0        推挽
        #define                COM3        P23                //        0        推挽
        #define                COM4        P24                //        0        推挽
        #define                COM5        P25                //        0        推挽
        #define                COM6        P26                //        0        推挽
        #define                COM7        P27                //        0        推挽

        #define                RXD                P30                //        1        双向
        #define                TXD                P31                //        1        推挽
        #define                SCL                P32                //        1        双向
        #define                SDA                P33                //        1        双向
        #define                SEGC        P34                //        0        推挽
        #define                SEGD        P35                //        0        推挽
        #define                SEGE        P36                //        0        推挽
        #define                CMP+        P37                //        0        高阻

        #define                SEG0        P40                //        0        推挽
        #define                SEG1        P41                //        0        推挽
        #define                SEG2        P42                //        0        推挽
        #define                SEG3        P43                //        0        推挽
        #define                SEG4        P44                //        0        推挽
        #define                SEG5        P45                //        0        推挽
        #define                SEG6        P46                //        0        推挽
        #define                SEG7        P47                //        0        推挽

        #define                TK8                P50                //        0        高阻
        #define                TK9                P51                //        0        高阻
        #define                TKA                P52                //        0        高阻
        #define                TKB                P53                //        0        高阻
        #define                TK2                P54                //        0        高阻
//        #define                NO                P55                //        0        高阻
//        #define                NO                P56                //        0        高阻
//        #define                NO                P57                //        0        高阻
       
#define                FOSC                        24000000UL                                //主时钟
#define                BAUD                        115200UL                                //波特率
#define                TMRF                        200UL                                        //定时器频率
#define                BRT                                (0x10000-FOSC/BAUD/4)        //波特率值
#define                TMR                                (0x10000-FOSC/TMRF/12)        //定时器值
#define                T_Buf_Len                64                                                //Uart1发送缓存长度
#define                R_Buf_Len                64                                                //Uart1接收缓存长度
#define                TS_Channel                16                                                //触摸按键通道数
#define                TS_Compare                0x0800                                        //触摸按键比较值
#define                TS_Range                0x0400                                        //触摸按键回滞值

unsigned char                RP;                                                //Uart2接收指针
unsigned char                TP;                                                //Uart2发送指针
unsigned char                Uart_R_Len;                                //Uart2接收长度
unsigned char                Uart_T_Len;                                //Uart2发送长度
unsigned char xdata        R_Buf;                //Uart2接收缓存
unsigned char xdata        T_Buf;                //Uart2发送缓存
unsigned char code        Seg_Map={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x40,0x00,0x80};        //0~F,杠,空格,点
unsigned char                Seg_Buf;
unsigned char                LED_Buf;
unsigned char code        TS_Map={0x06,0x07,0x0A,0x08,0x0C,0x0D,0x0E,0x0F,0x09,0x0B,0x04,0x05,0x00,0x01,0x02,0x03};        //触摸按键通道重映射
unsigned int xdata        TS_Buf;        //触摸按键数据(实际值、预处理值、最小值、最大值、结果)
unsigned char                TS_Select;                                //触摸按键选择通道(查看TS_Buf,低4位为低维度,范围0x*0-0x*B;高4位为高维度,范围0x0*-0x4*)
unsigned char                TS_Scan;                                //触摸按键扫描通道
bit                                        TS_Flag;                                //触摸按键中断标志
unsigned char                TS_Calibrate;                        //触摸按键校准状态
unsigned int                TS_Pad;                                        //触摸按钮状态
unsigned char                TS_Ring;                                //触摸滑环状态
unsigned char                TS_Slide;                                //触摸滑条状态
unsigned int                Ring;                                        //触摸滑环值
unsigned int                Slide;                                        //触摸滑条值

void Delay_ms(unsigned char ms)
{
        unsigned int i;
        do
        {
                i=FOSC/10000;
                while(--i);        //10T per loop
        }
        while(--ms);
}

//void Delay_100us(void)
//{
//        unsigned char data i,j;
//        i=4;
//        j=27;
//        do
//        {
//                while (--j);
//        }
//        while (--i);
//}

void UART_Send(unsigned int x)
{
        while(Uart_T_Len);
        TP=0;
        Uart_T_Len=x;
        TI=1;
}

//void Uart_Printf(unsigned char *v,...)
//{
//        va_list ap;
//        va_start(ap,v);
//        while(Uart_T_Len);
//        UART_Send(vsprintf(T_Buf,v,ap));
//        va_end(ap);
//}

void UART_Return(unsigned char temp)
{
        memcpy(T_Buf,R_Buf,temp);
        UART_Send(temp);
}

void Buzzer(void)
{
        if(TS_Pad&0x0100)
                BUZ=1;
        else
                BUZ=0;
}

void Seg_Display(void)
{
        Seg_Buf=((TS_Calibrate<<8)|TS_Select)>>4;
        Seg_Buf=((TS_Calibrate<<8)|TS_Select)&0x0F;
        Seg_Buf=16;
        Seg_Buf=TS_Buf/10000;
        Seg_Buf=TS_Buf%10000/1000;
        Seg_Buf=TS_Buf%1000/100;
        Seg_Buf=TS_Buf%100/10;
        Seg_Buf=TS_Buf%10;
        Seg_Buf=Slide%10000/1000;
        Seg_Buf=Slide%1000/100;
        Seg_Buf=Slide%100/10;
        Seg_Buf=Slide%10;
        Seg_Buf=Ring%10000/1000;
        Seg_Buf=Ring%1000/100;
        Seg_Buf=Ring%100/10;
        Seg_Buf=Ring%10;
}

void LED_Display(void)
{
        LED_Buf=TS_Pad&0x0001?0x07:0x00;
        LED_Buf=TS_Pad&0x0002?0x07:0x00;
        LED_Buf=TS_Pad&0x0004?0x07:0x00;
        LED_Buf=TS_Pad&0x0008?0x07:0x00;
        LED_Buf=TS_Pad&0x0010?0x07:0x00;
        LED_Buf=TS_Pad&0x0020?0x07:0x00;
        LED_Buf=TS_Pad&0x0040?0x07:0x00;
        LED_Buf=TS_Pad&0x0080?0x07:0x00;
        LED_Buf=TS_Pad&0x0100?0x07:0x00;
        LED_Buf=TS_Ring&0x01?0x07:0x00;
        LED_Buf=TS_Ring&0x02?0x07:0x00;
        LED_Buf=TS_Ring&0x04?0x07:0x00;
        LED_Buf=TS_Slide&0x01?0x07:0x00;
        LED_Buf=TS_Slide&0x02?0x07:0x00;
        LED_Buf=TS_Slide&0x04?0x07:0x00;
        LED_Buf=TS_Slide&0x08?0x07:0x00;
}

void LED(void)
{
        unsigned char i;
        unsigned char xdata *p=XBYTE+0xFB10;
        Seg_Display();
        LED_Display();
        for(i=0;i<8;i++)
        {
                *(p+i)=Seg_Map[Seg_Buf;
                *(p+8+i)=(LED_Buf&0x07)<<4;
                *(p+16+i)=Seg_Map[Seg_Buf;
                *(p+24+i)=(LED_Buf&0x07)<<4;
        }
       
//        COM0_DA_L=Seg_Map[Seg_Buf;
//        CO

免责声明:

本平台旨在开源共享精神,请勿发布敏感信息,任何违法信息我们将移交公安机关;

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

GMT+8, 2026-5-1 07:47 , Processed in 0.082381 second(s), 29 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

返回顶部