[51单片机] 电子旅途之初期—II(LED)

[复制链接]
793|1
 楼主| 512751875 发表于 2016-11-1 23:22 | 显示全部楼层 |阅读模式
51单片机—51的寄存器数量少,操作时可以直接对寄存器赋值。
了解IO的功能,IO口就是单片机的引脚,LED硬件连接在特定的引脚上面,LED一端连接着电源VCC,对LED的另一端送入低电平即可实现LED的点亮。
例如 #define LED1 P1^0
LED1 = 0;即实现连接在P1.0引脚的LED1点亮
LED闪亮: 亮-延时-灭  while{  0delay1 }LED呼吸 通过DA控制,这个会在DA章节探究。
延时函数delayms可以利用两个简单的for循环实现,参考郭天祥延时函数
  1. delayms(unsigned int xms)
  2. {
  3.     unsigned int i,j;
  4.      for(i=xms;i>0;i--)
  5.         for(j=110;j>0;j--);
  6. }
注意分号的有无。
LED 流水: LED0-7依次流水实现
左移<<   右移>>  C51中每执行一次移位指令,被操作的数将最高位移入单片机PSW寄存器的CY位,CY位原来的数据丢失。PSW寄存器CY位,在IIC章节,写一个字节函数中使用。  左移函数_crol_( ) 右移函数_cror_( ) 这两个函数包含在#include<intrins.c>
部分例:
  1. while(1)
  2. {
  3.      P1 = aa;
  4.     delayms(500);
  5.      aa = _crol_(aa,1);  //aa左移1位     
  6. }

部分例:
  1. while(1)
  2. {
  3.      for(i=8;i>0;i--)
  4. {
  5.     delayms(50);
  6.      P1 <<= 1;
  7.      P1 = P1|0x01;   //0000  0001
  8. }
  9. }


 楼主| 512751875 发表于 2016-11-2 13:36 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

133

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部