📄 main.c
字号:
/****************************************************************************
* File: main.c
* 功能:数码管循环显示十六进制数0~F,并使用4个LED指示当前数值
****************************************************************************/
#include "config.h"
#define SPI_CS 0x00000100
#define SPI_DATA 0x00000040
#define SPI_CLK 0x00000010
#define BEEP 0x00000080
#define SPI_IOCON 0x00003DD0
/****************************************************************************
* 名称:DelayNS()
* 功能:长软件延时
****************************************************************************/
void DelayNS(uint32 dly)
{
uint32 i;
for(;dly>0;dly--)
for(i=0;i<50000;i++);
}
/****************************************************************************
* 名称:HC595_SendDat()
* 功能:向74HC595发送一字节数据
****************************************************************************/
void HC595_SendDat(uint8 dat)
{
uint8 i;
IO0CLR=SPI_CS;
for(i=0;i<8;i++)
{
IO0CLR=SPI_CLK;
if((dat&0x80)!=0)
IO0SET=SPI_DATA;
else
IO0CLR=SPI_DATA;
dat<<=1;
IO0SET=SPI_CLK;
}
IO0SET=SPI_CS;
}
/****************************************************************************
* 名称:main()
* 功能:控制LED数码管显示,并控制4个LED显示
****************************************************************************/
int main(void)
{
const uint8 DISP_TAB[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
uint8 i;
PINSEL0=0x00000000;
PINSEL1=0x00000000;
IO0DIR=SPI_IOCON;
while(1)
{
for(i=0;i<16;i++)
{
HC595_SendDat(DISP_TAB[i]);
IO0SET=0x00003C00;
IO0SET=i<<10;
DelayNS(50);
IO0SET=BEEP;
DelayNS(10);
IO0CLR=BEEP;
DelayNS(10);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -