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

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个管脚。


对应实物图如下  ↓↓

(c)2006-2024 SYSTEM All Rights Reserved IT常识