⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main._c

📁 avr mega16 读取内部EEPRom
💻 _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 + -