第二次上机作业
通过编程可实现P1口上的八个发光二极管出现不同的闪烁效果,就是要改变I/O口上的电平变化来控制的,既低电平亮、高电平灭。要让二极管循环闪烁,就是让低电平从右到左循环移动。下面简单的编写一段使P1.0、P1.5、P1.7口上的三个二极管闪烁的程序,延时时间约为1s。通过编译可知:如果连接这三个二极管的I/O口处于低电平,二极管就亮了;如果连接这三个二极管的I/O口处于高电平,则灭了。
程序如下:
#include <reg51.h>
printf怎么实现的 sbit p1_0=P1^0;
sbit p1_5=P1^5;
sbit p1_7=P1^7;
#define uint unsigned int
#define uchar unsigned char
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
p1_0=0;
p1_5=1;
p1_7=1;
delay(1000);
p1_0=1;
p1_5=0;
p1_7=0;
delay(1000);
在调试界面"View"-“Serial Window #1串行输出窗口可以看到4433221100这10个数字。以下做个简单说明:
1、在程序中进行串口初始化时设置相应的波特率。
2、在程序中定义了整形数据a和i以及分别赋予2和10,当程序执行到while(i--)时,会循环执行10次每次输出一个数字,所以就会看到串行输出调试窗口中输出10个数字。
3、每执行一次printf(“%d\n“,i/a)就会输出一次。
4、“\n”这时换行符,所以我们看到一行只有一个数字。
5、“i/a”是i的值除以a的值的商的整数部分,在执行printf(“%d\n“,i/a)之前,i的值已经先自减1变成9了,所以9/2商4余1,所以输出的第一个数字是4,执行完后i的值不为0再自减1变成8,8/2商4,所以第二个输出的数字也是4,以此类推,当i值减为0时,0/2商0,所以输出的是0.
在调试界面"View"-“Serial Window #1串行输出窗口可以看30。程序中设置了合适的串行输出的波特率,定义了整形数据a和i并分别赋值5和6,在语句printf(“%d\n“,i*a)然后输出结
果30。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论