📄 main._c
字号:
#include <iom16v.h>
#include <macros.h>
#include <led.h>
#define uchar unsigned char
#define uint unsigned int
const uchar tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管段码
uchar buff[8]={0,0,0,0,0,0,0,0}; //8位显示缓冲区
extern void EEPROM_write(unsigned int addr, unsigned char dd);
extern void EEPROM_read(unsigned int addr,unsigned char *dd);
/*-------------------------------------------------------------------
delay :短延时函数
输入参数 x :粗略延时,x越大,延时越长
输出参数 :无
--------------------------------------------------------------------*/
void delay(unsigned int x)
{
while(x--);
}
/*------------------------------------------------------------------
L_delay :长延时函数
输入参数 y :粗略延时,y越大,延时越长
输出参数 :无
--------------------------------------------------------------------*/
void L_delay(unsigned int y)
{
while(y--) delay(65000);
}
/*-----------------------------------------------------------
PORT_init :端口初始化函数
输入参数 :无
输出参数 :无
------------------------------------------------------------*/
void PORT_init(void)
{
LED_DATA_DDR|=LED_NCS|LED_SCK|LED_MOSI; //设置为输出
LED_SEL_DDR |=LED_SELA|LED_SELB|LED_SELC; //设置为输出
LED_DATA_PORT&=~(LED_NCS|LED_SCK|LED_MOSI); //输出0
LED_SEL_PORT &=~(LED_SELA|LED_SELB|LED_SELC); //输出0
PORTC=0xff;
DDRC=0x00;
}
/*-----------------------------------------------------------
disp :数码管显示函数
输入参数 :无
输出参数 :无
------------------------------------------------------------*/
void disp(void)
{
uchar aa,i,j;
for(i=0;i<8;i++)
{
aa=~tab[buff[7-i]];
for(j=0;j<8;j++)
{
if((aa&0x80)!=0) LED_DATA_PORT|=LED_MOSI;
else LED_DATA_PORT&=~LED_MOSI;
LED_DATA_PORT|=LED_SCK;
LED_DATA_PORT&=~LED_SCK; //产生移位信号
aa=(aa<<1);
}
LED_SEL_PORT&=0x1f;
LED_SEL_PORT+=(i<<5); //74HC138译码
LED_DATA_PORT|= LED_NCS;
LED_DATA_PORT&=~LED_NCS; //数据输出到并行口上
delay(2000);
for(j=0;j<8;j++) //使输出置1
{
LED_DATA_PORT|=LED_MOSI;
LED_DATA_PORT|=LED_SCK;
LED_DATA_PORT&=~LED_SCK;
}
LED_DATA_PORT|= LED_NCS;
LED_DATA_PORT&=~LED_NCS;
}
}
/*-----------------------------------------------------------
main :主函数
输入参数 :无
输出参数 :无
------------------------------------------------------------*/
void main(void)
{
uchar aa;
PORT_init();
EEPROM_read(0x08, &aa);
PORTB=~aa;
aa++;
EEPROM_write(0x08, aa);
buff[7]=aa%10;
buff[6]=(aa/10)%10;
buff[5]=aa/100;
while(1)
{
disp();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -