|
菜鸟刚学单片机,看别人的代码看不明白,请高手讲解一下。
[复制链接]
是51单片机的C语言的代码。
有几处菜鸟都不明白是啥意思,就标上了//这里是啥意思呢??请高手帮我写一下注释,呵呵,谢谢了。
#include
#include
unsigned char data dis_digit;
unsigned char data dis_buf[8];
unsigned char data dis_index;
void main()
{
P0 = 0xff;
P2 = 0xff;
TMOD = 0x50;//这里是啥意思呢??
TH0 = 0x50;//这里是啥意思呢??
TL0 = 0xf0;//这里是啥意思呢??
IE = 0x82;//这里是啥意思呢??
dis_buf[0] = 0xf9;
dis_buf[1] = 0x80;
dis_buf[2] = 0xf8;
dis_buf[3] = 0x82;
dis_buf[4] = 0x92;
dis_buf[5] = 0x99;
dis_buf[6] = 0xb0;
dis_buf[7] = 0xa4;
dis_digit = 0xfe;
dis_index = 0;
TR0 = 1;
while(1);
}
void timer0() interrupt 1
// 定时器0中断服务程序, 用于数码管的动态扫描
// dis_index --- 显示索引, 用于标识当前显示的数码管和缓冲区的偏移量
// dis_digit --- 位选通值, 传送到P2口用于选通当前数码管的数值, 如等于0xfe时,
// 选通P2.0口数码管
// dis_buf --- 显于缓冲区基地址
{
TH0 = 0xf0;//这里是啥意思呢??
TL0 = 0xf0;//这里是啥意思呢??
P2 = 0xff
P0 = dis_buf[dis_index];
P2 = dis_digit;
dis_digit = _cror_(dis_digit,1); // 位选通值左移, 下次中断时选通下一位数码管
dis_index++; //
dis_index &= 0x07; // 8个数码管全部扫描完一遍之后,再回到第一个开始下一次扫描
}
|
|