📄 main.c
字号:
/* EasyARM2100工程模板演示文件 */
/****************************************************************************
* 文件名:main.C
* 功能:LED数码管显示0-F字符,同时控制LED1、LED2、LED3、LED4显示对应的16进行值。
* 说明:将跳线器JP3、JP4、JP7短接。
****************************************************************************/
#include "config.h"
#define SPI_CS (1<<29) /* P0.29 ,2114 */
#define SPI_DATA (1<<6) /* P0.6 */
#define SPI_CLK (1<<4) /* P0.4 */
//#define BEEP (1<<7) /* P0.7为蜂鸣器控制 */
#define SPI_IOCON (SPI_CS|SPI_DATA|SPI_CLK) /* SPI接口的I/O设置字 */
#define LED_IOCON (0x0D<<22) /* LED1-4的I/O设置字 */
#define KEY IO0PIN&0x00010000 /* P0.16引脚连接KEY1 */
//#define cs (1<<22) /*mcp4822 CS P0.22*/
//#define sck (1<<23) /*P0.23*/
//#define sdi (1<<24) /*P0.24*/
//#define ldac (1<<25) /*P0.25*/
/****************************************************************************
* 名称:HC595_SendDat()
* 功能:向74HC595发送一字节数据
* 入口参数:dat 要发送的数据
* 出口参数:无
* 说明:发送数据时,高位先发送。
****************************************************************************/
void delay(uint32 dly)
{
uint32 i;
for(i=0;i<dly;i++)
{
;
}
}
void init_io(void)
{
PINSEL0 = UART0_EN|I2C_EN|UART1_EN; //enable uart0 uart1 i2c
PINSEL1 = 0;
IO0DIR = LCD_RW|
LCD_E|
LCD_D0|
LCD_D2|
LCD_D3|
LCD_D5|
LCD_D7|
LCD_CS2|
LCD_CS1|
D1302_RST|
LCD_POWER|
M485_EN|
M4821_CS11|
M4821_SDI2|
M4821_CS12|
M4821_SDI1|
D1302_CLK;
IO1DIR = D1302_IO|
M4821_SCK1|
M4821_SCK2|
LED|
BEEP|
LCD_D6|
LCD_D4|
LCD_D1|
LCD_RS|
RY4;//|
// RY3|
// RY2|
// RY1;
IO1SET = LED;
IO1SET = BEEP;
IO0CLR=M485_EN;
}
void I2C_Init(void)
{ /* 设置I2C时钟为100KHz */
I2SCLH = I2SCLL = 14; // 晶振为11.0592MHz,Fpclk = 2.7648MHz
/* 设置I2C中断允许 */
VICIntSelect = 0x00000000; // 设置所有通道为IRQ中断
VICVectCntl15 = 0x29; // I2C通道分配到IRQ slot 10
VICVectAddr15 = (int)IRQ_I2C; // 设置I2C中断向量地址 10
VICIntEnable |= 0x00000200; // 使能I2C中断
}
void UART0_Ini(uint32 bps)
{ uint16 Fdiv;
U0LCR = 0x83; // DLAB = 1,可设置波特率
Fdiv = (Fpclk / 16) / bps; // 设置波特率
U0DLM = Fdiv / 256;
U0DLL = Fdiv % 256;
U0LCR = 0x03;
U0FCR = 0x81; // 设置FIFO控制寄存器,使能FIFO,并设置触发点为8字节。
U0IER = 0x01; // 设置中断使能寄存器,允许RBR中断,即接收中断
VICIntSelect = 0x00000000; // 设置所有通道为IRQ中断
VICVectCntl0 = 0x26; // UART0中断通道分配到IRQ slot 10,即优先级10
VICVectAddr10 = (int)IRQ_UART0; // 设置UART0向量地址为10
VICIntEnable |= 0x00000040; // 使能UART0中断
}
//void HC595_SendDat(uint8 dat)
//{
// uint8 i;
// IO0CLR = SPI_CS; // SPI_CS = 0
// for(i=0; i<8; i++) // 发送8位数据
// {
// IO0CLR = SPI_CLK; // SPI_CLK = 0
/* 设置SPI的DATA输出值 */
// if( (dat&0x80)!=0 ) IO0SET = SPI_DATA;
// else IO0CLR = SPI_DATA;
// dat <<= 1;
// IO0SET = SPI_CLK; // SPI_CLK = 1
// }
///
// IO0SET = SPI_CS; // SPI_CS = 1,输出显示数据
//}
/* 此表为0--F的字模 */
//const uint8 DISP_TAB[16] = { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
// 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E };
int main(void)
{
init_io();
I2C_Init();
UART0_Ini(115200);
init_LCD();
i2ctest();
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -