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

📄 slavr938.c

📁 单片机开发资料光盘-双龙-686M.zip
💻 C
字号:
/*在SL-AVR开发实验器上,用SHIFT键,按一次键加一计数显示程序*/
#include <io8515.h> /*头文件*/
#define uchar unsigned char /*缩写定义*/
#define uint  unsigned int
flash uchar DATA_7SEG[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                          0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};/*LED字形表*/
uchar led[6]; /*显示缓冲*/
uint count; /*延时子程序*/
void delay(uint t)
{
 uint i;
 for (i=0;i<t;i++);
}            
void init_disp(void)  /*初始化B口,D口*/
{
  DDRB=0xff;
  DDRD=0x7f;
  PORTD|=0x80;
}
void disp(void)   /*键盘显示*/
 {
  uchar i;
  for (i=0;i<6;i++)
     {
       PORTD=~(0x01<<i);
       PORTB=DATA_7SEG[led[i]];
       delay(1000);
     } 
  PORTB=0x00;
  PORTD=0xff;
 }
void be_pc0(void) /*发出一声响子程序*/
{
 uint i;
   DDRC|=0x01;
    for (i=0;i<350;i++)
      {
       PORTC^=0x01;
       delay(350);
      }
}
void conv(void) /*计数值转换成十进制数*/
 {
  led[5]=0;
  led[4]=count/10000;
  led[3]=count/1000%10;
  led[2]=count/100%10;
  led[1]=count/10%10;
  led[0]=count%10;
 } 
void main(void) /*主程序*/
 {
  init_disp( ); /*初始化B口,D口*/
  count=0;      /*开始计数值是零*/
  conv();   /*转换*/
  for( ; ; )
    {
      while((PIND&0x80)==0x80)  /*没有键按下等待*/
         disp();  /*显示*/
      be_pc0();   /*发出一声响*/      
      count++;    /*计数器加1*/
      conv( );    /*转换成十进制数*/
      while((PIND&0x80)==0) /*有键按下*/
          disp(); /*显示*/
     }     
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -