#include <intrins.h>
void delay1s(void);
void main()
{
char num;
while(1)
{
for(num=0;num<8;num++)
{
P1=num;
delay1s();
}
}
}
void delay1s(void) //误差 0us
{
unsigned char a,b,c;
for(c=167;c>0;c--)
for(b=171;b>0;b--)
for(a=16;a>0;a--);
_nop_(); //if Keil,require use intrins.h
}
while(1)死循环啊,P1=num;这里的P1在哪里声明的?
delay1s就是三层循环,啥也不干,就是执行167*171*16次循环,应该就是延时用的。
74ls138 是 3线8线译码器
这段代码是用枚举的方法,产生(10进制 0-7) 按二进制表示就是 000,001,010,011,100,101,110,111
这 0-7 输出到 P0 的低 3 位 P1^0,P1^1,P1^2 这3个信号接 74ls138 的输入线,再用 LED 或 电压表的方式测量 74ls138 8条输出线,对比74ls138 真值表验证 74ls138 的逻辑。