使用串口输出数据。
一、电路图
1.1、串口使用P2.0,P2.1为串口通信引脚。
1.2、使用74HC125+74HC138来选择串口通道,这里选择USB-TTL通道。
1.3、使用USB-TTL输出数据
二、驱动程序
2.1、main.c
#include "config.h"
void main(void)
{
uint i=0;
Init_led();
Init_uart(32, 9600);
uart_chl(1); //USB-TTL
while(1)
{
uart_send_string(" www.socmcu.com sc95f8617 uart test \r\n");
LED0=0;
LED1=1;
LED2=0;
LED3=1;
for(i=0;i<50000;i++);
for(i=0;i<50000;i++);
LED0=1;
LED1=0;
LED2=1;
LED3=0;
for(i=0;i<50000;i++);
for(i=0;i<50000;i++);
}
}
2.2、uart.c
#include "config.h"
bit UartSendFlag = 0; //·¢ËÍÖжϱê־λ
bit UartReceiveFlag = 0; //½ÓÊÕÖжϱê־λ
void uart_chl(uchar ul)
{
switch (ul)
{
case 0: //rs485
UART_CHA=0;
UART_CHB=0;
break;
case 1: //usb-ttl
UART_CHA=1;
UART_CHB=0;
break;
default:
break;
}
}
void Init_uart(uint Freq, unsigned long int baud)
{
P2CON &= ~0x03;
P2PH |= 0x03;
P5CON &= ~0x14 ; //0001 0100
P5CON |= 0x14 ;
P5PH |= 0x14;
SCON |= 0X50;
TMCON |= 0X02;
TH1 = (Freq*1000000/baud)>>8;
TL1 = Freq*1000000/baud;
TR1 = 0;
ET1 = 0;
//EUART = 1;
EA = 1;
}
void uart_send_char(uchar ch)
{
SBUF=ch;
while(TI==0);
TI=0;
}
void uart_send_string(uchar *str)
{
while(*str )
{
uart_send_char(*str ++);
}
}
////uartint
//void UartInt(void) interrupt 4
//{
// if(TI)
// {
// TI = 0;
// UartSendFlag = 1;
// }
// if(RI)
// {
// RI = 0;
// UartReceiveFlag = 1;
// }
//}
1.3、uart.h
#ifndef __UART_H__
#define __UART_H__
sbit UART_CHA = P5^2;
sbit UART_CHB = P5^4;
void Init_uart(uint Freq, unsigned long int baud);
void uart_chl(uchar ul);
void uart_send_char(uchar ch);
void uart_send_string(uchar *str);
#endif
三、执行结果
3.1、串口输出数据
3.2、运行视频
DL6指示灯闪烁,表示串口有数据输出
|