#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--); } |
文章评论(0条评论)
登录后参与讨论