uart_inc.c
来自「菜鸟,详细NRF24E1运用,程序,电路」· C语言 代码 · 共 148 行
C
148 行
#include "reg24le1.h"
#include "app.h"
void io_config(void)
{
EA = 0;
// CLK
CLKCTRL = 0x28; // Clock sourced by XCOSC16M
CLKLFCTRL = 0x01; // RCOSC32K
delayx(50);
// RTC
OPMCON = 0x00;
RTC2CMP0 = 0x00;
RTC2CMP1 = 0x80;
RTC2CON = 0x07;
WUOPC1 = 0x00;
WUOPC0 = 0x00;
WUCON = 0xEB;
// TIMER
TMOD |= 0x01; // Timer0: Mode 0, 13-bit timer
TF0 = 0; // Timer0: interrupt flag clear
ET0 = 1; // Timer0: interrupt enable
TCON = 0; // Timer0: run control
TR0 = 0; // Timer0: stop timer
TH0 = 0xFA;
TL0 = 0xCA;
// IO
ADCCON1 = 0x00;
ADCCON2 = 0x00;
ADCCON3 = 0x00;
COMPCON = 0x00;
PWMCON = 0x00;
P0 = 0;
P1 = 0;
P0DIR = 0x00;
P1DIR = 0x00;
}
void uart_init(void)
{
P0DIR &= 0xF7; // P03 (TxD) is output
P0DIR |= 0x10; // P04 (RxD) is input
P0|=0x18;
S0CON = 0x50;
PCON |= 0x80; // SMOD = 1
WDCON |= 0x80; // Select internal baud rate generator
S0RELL = 0xF3; // BAUD_38K4
S0RELH = 0x03;
//ES0 = 1;
}
void send(unsigned char tmp)
{
S0BUF=tmp;
while(!TI0);
TI0=0;
}
void puts(unsigned char *s)
{
unsigned char *cs=s;
while(*cs!='\0')
{
send(*cs++);
}
}
unsigned char getch(void)
{
unsigned char tmp;
if(RI0)
{
RI0=0;
tmp=S0BUF;
return tmp;
}
else
return false;
}
void delayx(int x)
{
int da,db;
for(da=100;da>0;da--)
for(db=0;db<x;db++)
{
;
}
}
/*主函数部分*/
code const unsigned char test_string[]="this is a test string from le1 uart! ";
void main(void)
{
unsigned char tmp=0,flag=0;
unsigned int num=0;
io_config();
uart_init();
delayx(100);
puts(test_string);
while(1)
{
if(RI0==1)
{
tmp=S0BUF;
RI0=0;
S0BUF=tmp;
while(!TI0);
TI0=0;
}
num++;
if(num<2000)
flag=1;
else
flag=0;
num%=10000;
LED0=flag;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?