📄 main.c
字号:
//#include"lpc213x.h"
#include"config.h"
#define UART_BPS 4800 //波特率=4800
#define F_pclk 11059200 //Fpclk为11059200
U32 WG;
//*********************************************
void DelayNS(U32 dly)
{ U32 i;
for(;dly>0;dly--)
for(i=0;i<5000;i++);
}
//*************************************************
void UART0_Init(void) //初始化串口
{
U16 Fdiv;
U0LCR=0x83;
Fdiv=(F_pclk/16)/UART_BPS;
U0DLM=Fdiv/256;
U0DLL=Fdiv%256;
U0LCR=0x03;
}
//************************************************
void send_8bit_data(U32 data) //发送字节,十六进制发送
{
U0THR=data;
while((U0LSR&0x40)==0);
}
//***********************************************
void __irq IRQ_Eint0(void)
{
// VICIntEnClr=0xFFFFFFFF;
// IRQDisable();
WG=(WG<<1);
IOCLR0=0x05<<10;
IOSET0=0x0A<<10;
while((EXTINT&0x01)!=0)
{ EXTINT=0x01; }
// VICIntEnable=0xFFFFFFFF;
//IRQEnable();
VICVectAddr=0;
}
//****************************************************
void __irq IRQ_Eint3(void)
{
WG=((WG<<1)+0x01);
IOCLR0=0x0A<<10;
IOSET0=0x05<<10;
while((EXTINT&0x08)!=0)
{ EXTINT=0x08; }
VICVectAddr=0;
}
//****************************************************
int main (void)
{
U32 WG_1,WG_2,WG_3,WG_4;
WG=0x00000000;
PINSEL0=0x00000000;
PINSEL0=((PINSEL0&~0x0F))|0x05; //P0.0和P0.1连接到串口
UART0_Init();
PINSEL1=0x00000301;
IODIR0=0x0F<<10;
// IRQDisable();
IRQEnable();
VICIntSelect=0x00000000;
VICVectCntl0=0x20|14;
VICVectAddr0=(U32)IRQ_Eint0;
VICIntEnable=1<<14;
VICVectCntl1=0x20|17;
VICVectAddr1=(U32)IRQ_Eint3;
VICIntEnable=1<<17;
while(1)
{
IOCLR0=0x0F<<10;
DelayNS(100);
IOSET0=0x0F<<10;
DelayNS(100);
WG_1=WG;
WG_2=WG>>8;
WG_3=WG>>16;
WG_4=WG>>24;
send_8bit_data(WG_4);
DelayNS(50);
send_8bit_data(WG_3);
DelayNS(50);
send_8bit_data(WG_2);
DelayNS(50);
send_8bit_data(WG_1);
DelayNS(500);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -