Chinese English 切换到窄版

 找回密码
 立即注册
搜索
查看: 1082|回复: 0

YS274 IO模拟UART串口例程

[复制链接]

主题

0

回帖

0

积分

版主

积分
0
发表于 2025-2-20 14:59:47 | 显示全部楼层 |阅读模式

#define SET_UART_OUTPUT() \
    do                    \
    {                     \
        CPIOA &= ~0X10;   \
    } while (0) /* 配置UART 为输出口*/
#define UART_H()       \
    do                 \
    {                  \
        PORTA |= 0X10; \
    } while (0)
#define UART_L()        \
    do                  \
    {                   \
        PORTA &= ~0X10; \
    } while (0)

const u8 NumTable[] = {'0','1','2','3','4','5','6','7','8','9',
                                                'a','b','c','d','e','f','\r','\n',};

void UartDelay(void)
{
        while (!TIF) asm("clrwdt");

        TIF = 0;
}



void UartSend(u8 dat)
{
        u8 send;
        u8 i;

        send = dat;
        UART_H();
        UartDelay();
        UartDelay();
        UartDelay();
        UART_L();

        UartDelay();

        for (i = 0; i < 8; i++)
        {
                if (0x01 == (send & 0x01))
                {
                        UART_H();
                }
                else
                {
                        UART_L();
                }

                send >>= 1;
                UartDelay();
        }

//        UART_L();
//        UartDelay();

        UART_H();
}




void UartString(const char *s)
{
        while (*s)
        {
                UartSend(*s++);
        }
}




void UartSendUintByDecimal(u16 *p, u8 num)
{
        u16 tmp16;
        u8 i;

        u8 UintH, UintHL, UintM, UintL, UintLL;
       
        if (0 != num)
        {
                for (i = 0; i < num; i++)
                {
                        tmp16 = *p++;
                       
                        UintH = tmp16 / 10000;
                        UintHL = (tmp16 % 10000) / 1000;
                        UintM = (tmp16 % 1000) / 100;
                        UintL = (tmp16 % 100) / 10;
                        UintLL = tmp16 % 10;

                        UartString(" ");
                       
                        if (1 == UintH)
                        {
                                        UartString(" ");
                        }
                        else
                        {
                                UartSend(NumTable[UintH]);

                        }
//
                        if ((0 == UintHL) && (0 == UintH))
                        {
                                        UartString(" ");
                        }
                        else
                        {
                                UartSend(NumTable[UintHL]);

                        }
//
                        if ((0 == UintM) && (0 == UintHL) && (0 == UintH))
                        {
                                        UartString(" ");
                        }
                        else
                        {
                                UartSend(NumTable[UintM]);

                        }
//
                        if ((0 == UintL) && (0 == UintM) && (0 == UintHL) && (0 == UintH))
                        {
                                        UartString(" ");
                        }
                        else
                        {
                                UartSend(NumTable[UintL]);

                        }
//
                        UartSend(NumTable[UintLL]);

                }
               
        }
}




void UartSendUcharByHex(u8 *p, u8 num)
{
        u8 tmp8;
        u8 i;
       
        if (0 != num)
        {
                for (i = 0; i < num; i++)
                {
                        tmp8 = *p++;

                        UartString(" ");
                       
                        UartSend(NumTable[(tmp8>>4)&0X0F]);
                        UartSend(NumTable[(tmp8>>0)&0X0F]);
                               
                }
        }
}


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

本版积分规则

Archiver|手机版|汇春技术社区 ( 粤ICP备08030648号-1 )

GMT+8, 2025-7-9 03:22 , Processed in 0.136370 second(s), 20 queries .

Powered by Discuz! X3.5

Copyright © 2024 YSPRING. All Rights Reserved. 汇春科技,版权所有。

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