📄 spi_uart.c
字号:
#include "config.h"
#define nDSEN 7
#define LED 24
//const unsigned long DS2=(1<<24);
//#define DIS1 20
//#define DIS2 21
//#define DIS3 22
//#define DIS4 23
uint8 rcv_test;
uint8 rcv_data;
uint8 rcv_buf[4];
uint8 rcv_buf_test[]={"hello world\0"};
volatile uint8 rcv_new;
uint8 DISP_TAB[16] = {
// 0 1 2 3 4 5 6 7 8 9 A b C d E F
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88, 0x83, 0xC6, 0xA1,0x86, 0x8E};
void Delay1us(uint32 times)
{
uint8 i=0;
uint32 j=0;
for(j=0; j<times; j++)
{
for(i=0; i<60; i++);
}
}
void __irq IRQ_UART0(void)
{ uint8 i;
if((U0IIR & 0x0f)==0x04)
rcv_new=1;
for(i=0;i<4;i++)
{
while ((U0LSR & 0x01) == 0);
rcv_buf[i]=U0RBR;
}
VICVectAddr=0x00;
}
void IRQ_Init(void)
{
VICIntSelect=0x00000000;
VICVectCntl0=0x20|0x06;
VICVectAddr0=(uint32)IRQ_UART0;
VICIntEnable=1<<0x06;
}
int main()
{ uint8 i,temp;
rcv_new=0;
rcv_test=0;
PINSEL2=0x00000004;
PINSEL0=0x00000005;
PINSEL0|=0x00001500;
TargetResetInit();
UART0_Init(19200);
SPI_Init();
IRQ_Init();
U0FCR=0x41;
U0IER=0x01;
IO0DIR=(uint32)(1<<nDSEN);
IO1DIR=(uint32)(0x1f<<20);
IO1SET=(uint32)(0x0f<<20);
IO1SET|=(1<<LED);
while(1)
{ if(rcv_new==1)
{
rcv_new=0;
UART0_SendStr(rcv_buf);
rcv_test=rcv_buf[0];
if(rcv_test=='7')
{
UART0_SendStr(rcv_buf_test);
IO1CLR|=(1<<LED);
}
if(rcv_test=='1')
{
IO1SET|=(1<<LED);
}
}
for(i=0;i<=3;i++)
{
IO1SET|=(0x0f<<20);
temp=rcv_buf[i]-'0';
rcv_data=SPI_SendData(nDSEN,(uint16)(DISP_TAB[temp]));
IO1CLR|=(1<<(20+3-i));
Delay1us(10);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -