单片机系列流水灯程序是如何写入单片机的

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

100分求助,LVTTL和TTL电平之间如何转换?

不同电平的单片机如何实现通信?

51单片机里的RS232串口电压肯定不会超过5V,为啥还要MAX232电平转换呀。用PL2303,还需要MAX232吗。

GPIO_OType

单片机RGB调色程序 要求基于PWM(STC系列单片机c语言)可以实现至少60种颜色调节,有多种模