51单片机学习 笔记 宋雪峰教程

  • Post author:
  • Post category:其他


单片机最小系统三要素

电源电路 复位电路 晶振电路

sfr P0 =0x80;

sbit LED=P0^0;

#include <reg52.h>

三极管:模拟电路和数字电路中经常会用到的一个器件 PNP型 NPN型

记忆口诀箭头朝内PNP,导通电压顺箭头过,电压导通,电流控制

b:基级 e:发射级 c:集电极

流水灯从左右往

#include <reg52.h>

sbit ADDR0=P1^0;

sbit ADDR1=P1^1;

sbit ADDR2=P1^2;

sbit ADDR3=P1^3;

sbit ENLED=P1^4;

void main()

{


unsigned int i=0;

unsigned char cnt=0;

ENLED=0;

ADDR3=1;

ADDR2=1;

ADDR1=1;

ADDR0=0;

while(1)

{


while(cnt<8){


P0=~(0x80>>cnt);

for(i=0;i<30000;i++);

cnt++; }

cnt=0;

while(cnt<8){


P0=~(0x01<<cnt);

for(i=0;i<30000;i++);

cnt++; }

cnt=0;

}

}

可以定义一个方向变量x(值为0 or 1) 到0x01或0x80就置位

硬件置1 指硬件自动执行

使用定时器的方法

1 设置特殊功能寄存器TMOD,配置好工作模式

2设置计数寄存器TH0和TL0的初值

3设置TCON,通过TR0置1来让定时器开始计数

4判断TCON寄存器的TF0位,检测定时器一处情况

用计时器实现往返流水灯

if (1 == TF0)

{


TF0 = 0;

TH0 = 0xB8;

TL0 = 0x00;

cnt++;

if (cnt >= 50)

{


cnt = 0;

LED = ~LED;

}

}

替换for循环语句就可以,不过要提前声明cnt和其他寄存器变量

中断

进入中断的三个条件

1打开中断 先打开总中断 EA=1; 再打开定时器中断

2符合中断条件 也就是定时器溢出了

3中断入口正确 中断向量地址决定中断入口号



版权声明:本文为qq_44051286原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。