单片机系列流水灯程序是如何写入单片机的
Posted lxq_xsyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机系列流水灯程序是如何写入单片机的相关的知识,希望对你有一定的参考价值。
在上一篇中《单片机实现跑马灯》中我们完成了一个漂亮的流水灯,里面有一段代码我们来分析一下吧,看看单片机是怎么理解这段代码的。
《单片机实现跑马灯》(点击图片跳转)
#include <reg51.h> //此文件中定义了51的一些特殊功能寄存器
void Delay10ms(unsigned int); //误差 0us
void main() //主函数
while(1)
P2 = 0x00; //置P0口为低电平
Delay10ms(50); //调用延时程序
P2 = 0xff; //置P0口为高电平
Delay10ms(50); // 调用延时程序
void Delay10ms(unsigned int c) //误差 0us
unsigned char a,b;
for(;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
为什么我们可以直接给P2赋值呢?哪里定义了这个变量,打开Keil的安装目录(例如我的在C:\\Keil\\C51\\INC\\REG51.H)我们可以看到一个头文件,内容里面定义了P2.粘贴一部分如下。
#ifndef __REG51_H__
#define __REG51_H__
/* BYTE Register */
sfr P0 = 0x80;
sfr P1 = 0x90;
sfr P2 = 0xA0;
sfr P3 = 0xB0;
sfr PSW = 0xD0;
sfr ACC = 0xE0;
sfr B = 0xF0;
sfr SP = 0x81;
sfr DPL = 0x82;
sfr DPH = 0x83;
此处省略........
#endif
sfr P2 = 0xA0这句话的意思是把单片机内部地址0xA0处的这个寄存器重新起名叫P2,所以我们在程序中可以直接操作P2来操作地址0xA0处的寄存器。如下图这是STC89C52RC单片机的管脚分布,P0, P1, P2分别对应8个管脚。
对应实物图如下 ↓↓
问个问题 收到的3V的信号如何转到5V来供单片机51用 3V单片机无法识别高低电平 就是将0-3
51单片机里的RS232串口电压肯定不会超过5V,为啥还要MAX232电平转换呀。用PL2303,还需要MAX232吗。