第二次上机作业
通过编程可实现P1口上的八个发光二极管出现不同的闪烁效果,就是要改变I/O口上的电平变化来控制的,既低电平亮、高电平灭。要让二极管循环闪烁,就是让低电平从右到左循环移动。下面简单的编写一段使P1.0P1.5P1.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串行输出窗口可以看到443322110010个数字。以下做个简单说明:
1、在程序中进行串口初始化时设置相应的波特率。
2、在程序中定义了整形数据ai以及分别赋予210,当程序执行到whilei--)时,会循环执行10次每次输出一个数字,所以就会看到串行输出调试窗口中输出10个数字。
3、每执行一次printf(“%d\n“,i/a)就会输出一次。
4、“\n”这时换行符,所以我们看到一行只有一个数字。
5、“i/a”是i的值除以a的值的商的整数部分,在执行printf(“%d\n“,i/a)之前,i的值已经先自减1变成9了,所以9/241,所以输出的第一个数字是4,执行完后i的值不为0再自减1变成88/24,所以第二个输出的数字也是4,以此类推,当i值减为0时,0/20,所以输出的是0.
在调试界面"View"-“Serial Window #1串行输出窗口可以看30。程序中设置了合适的串行输出的波特率,定义了整形数据ai并分别赋值56,在语句printf(“%d\n“,i*a)然后输出结
30

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。