mini2440串口的输入和输出整理

串口的换行和退格键处理的测试:
vim uart.c:

#include "mini2440.h"
#define UART_CLK    (PCLK)
#define UART_BAUD_RATE    115200
#define UART_BRD    ((UART_CLK / (UART_BAUD_RATE *16)) - 1)
#define TXD0READY    (1<<2)
#define RXD0READY    (1<<0)
void uart0_init()
{
    rGPHCON |= 0xa0;
    rGPHUP |= 0x0c;

    rULCON0 = 0x03;
  
    rUCON0 = 0x05;
    
    rUFCON0 = 0x00;
    rUMCON0 = 0x00;

    rUBRDIV0 = (long)UART_BRD;
}

void putc(unsigned char data)
{
    while(!(rUTRSTAT0 & TXD0READY));
    rUTXH0 = data;
    if (data == '\n') { //换行处理
        putc('\r');
    }
}


void puts(unsigned char *Dats)
{
    unsigned char i = 0;
    for(; Dats[i] != '\0'; i++){
        putc(Dats[i]);
    }
}    

unsigned char getc(void)
{
    unsigned char data;
    while(!(rUTRSTAT0 & RXD0READY));
    data = rURXH0;
    if(data == '\b'){ //退格处理
        putc('\b');
        putc(' ');
    }
    return data;
}



void Get_Send(void)
{
    unsigned char data;
    unsigned char Dats[100];
    unsigned char i = 0;
    unsigned char *p = "\nHello, world!\n";
    uart0_init();
    
    while(1){
        puts(p);
        
        puts("Input:\n");
        while((data = getc()) != '\r'){
            putc(data);
            if((data == '\b')&&(i > 0)){
                i--;
            }
            else{
                Dats[i] = data;
                i++;
            }
        }
        Dats[i] = '\0';
        puts("\nYour order is: \n");
        puts(Dats);
        putc('\n');
        i = 0;
    }
}

完整代码如下附件:
文件:hand.tar.gz
大小:4KB
下载:下载

<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(370) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值