原创 实验10-99计数器

2006-10-3 21:48 4669 11 11 分类: MCU/ 嵌入式

#include "reg51.h"<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


/********************/
unsigned char table[]=
   {0x<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
   //
共阴数码管 0-9
/********************/  
sbit seclet_A = P1^0; //
管脚定义 74-138 3-8 控制信号线
sbit seclet_B = P1^1;
sbit seclet_C = P1^2;
/********************/  //
宏定义  
#define  SM_1  seclet_C=0;seclet_B=0;seclet_A=0
#define  SM_2  seclet_C=0;seclet_B=0;seclet_A=1
#define  SM_3  seclet_C=0;seclet_B=1;seclet_A=0
#define  SM_4  seclet_C=0;seclet_B=1;seclet_A=1
#define  SM_5  seclet_C=1;seclet_B=0;seclet_A=0
#define  SM_6  seclet_C=1;seclet_B=0;seclet_A=1
#define  SM_7  seclet_C=1;seclet_B=1;seclet_A=0
#define  SM_8  seclet_C=1;seclet_B=1;seclet_A=1


/******************************/
void delay(unsigned int d_time);
     //
延时子函时,
     
unsigned char count_99=0;
unsigned char count="0";
/***************/  
void main(void) 
{
 unsigned char i;  //
定义循环变量
    TMOD="0x01";   //T0
工作在方式1 16位计数器
    TH0=(65536-10000)/256;  //
预先 设定定时器 初值
    TL0=(65536-10000)%256;
    EA="1";    //
开启 总中断
    ET0=1;    //
开启定时器 0
    TR0=1;    //
定时器 0 的运行标志位 
 while(1)
 {
  SM_8;    //
点亮第八个数码管  
  P2=table[count_99%10]; //P2
作为数据传输端口
  delay(70);
  SM_7;    //
点亮第七个数码管  
  P2=table[count_99/10]; //P2
作为数据传输端口
  delay(70);
  
 }
}


/**********************************/
void time0(void)  interrupt 1 using 1  //
产生50MS定时

 TH0=(65536-50000)/256; //
重新设置定时器 初值
 TL0=(65536-50000)%256;
 count++;   //50ms
太短,闪烁频率太快
 if(count==20)  //
用变量 count 延长到1s
 {
  count=0;  //
计数器清零
  count_99++;
  if(count_99==100)
   count_99=0;
 }
}


/*******************************/
//
延时子函数
//
参数范围 0-65536
void delay(unsigned int d_time)   //
参数 d_time 大小
{            //
决定延时时间长短


 for(; d_time>0; d_time--);
}


 点击看大图


PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
11
关闭 站长推荐上一条 /3 下一条