单片机独立按键控制led显示二进制

单片机独立按键控制led显示二进制
引用Delay1ms 的函数实在stc的软件里 叫软件计时器 设置为 系统频率为12mhz(为晶振的频率 实际板子是11.0592)这里跟着课程做 软件计时器的代码为!
单片机独立按键控制led显示二进制_第1张图片

void Delay100ms() //@12.000MHz
{
unsigned char i, j;

i = 195;
j = 138;
do
{
	while (--j);
} while (--i);

}
这里调用了Delay1ms 函数 设置了参数为unsigned int 类型 参数名为xms
执行延时一秒代码为:
i = 195;
j = 138;
do
{
while (–j);
} while (–i);
延时1ms进行一次操作 为了延时xms要进行x次循环
因为要延时xms 所以代码调整为下:
while(xms–)
{
i = 195;
j = 138;
do
{
while (–j);
} while (–i);
}
xms–可放在while的括号内
单片机独立按键控制led显示二进制_第2张图片
p2开始是0xff 即全是1111 1111 当按下按键 P3_1=0 进入if语句 延时20毫秒(规避按键抖动)
此时你还在按动这按键 按键仍然被按下进入while语句 再次延时20毫秒(规避按键抖动)
松开按键 跳出while循环 执行下一语句 P2++ P2由1111 1111 变为0000 0000 (16进制的加法)
此时灯全亮 都为低电平 ;一次循环结束 再次循环 按下按键 进入if 延时 按键仍然被按下 进入 while语句 延时 P2++ P2由0000 00001 变为 0000 00010 (满二进一) 最左边的灯灭 从左边数的第二个灯亮; 依次循环
单片机独立按键控制led显示二进制_第3张图片
num加加 P2=~num 这个操作 第一 p2 全为0000 0000 num加加 num= 1 P2=~num实现了 0000 0001

0000 0010> 0000 00011> 0000 001000 …
使得灯依次左边第一个亮 左边第二个亮 左边两个一起亮 左边第一个亮和第三个亮。。。

你可能感兴趣的:(单片机,嵌入式硬件)