1. 首页 > 中职新闻 >

51单片机简单程序实例(51单片机程序100例)

51单片机中的4个工作寄存器组,什么时候用到?怎么用,请举个简单例子,谢谢了

一般情况下,都是用的是个寄存器组,即R0~R7对应00H~07H,当使用中断的时候,为了避免使用工作寄存器造成的相互影响,常常使用其他工作寄存器组。比如:

51单片机简单程序实例(51单片机程序100例)51单片机简单程序实例(51单片机程序100例)


51单片机简单程序实例(51单片机程序100例)


void t0isr() interrupt 1 using 2 就是使用10H~17H这一组工作寄存器。

很多数值运算的时候都需要用到这个寄存器组,非常频繁。

比如延时电路,配合DJNZ 这类的指令,后面基本上都是寄存器。

简单的51单片机设计,用8个按键控制8个灯的程序!(高分!)要求如下:

#include

#define uint unsigned int

#define uchar unsigned char

void delay(uint z);

void main()

{uchar a;

a=0x00;

P0=0x00;//P0输出; led共阴接法 P1输入按键另一端接地 P0加上拉电阻

P1=0xff;

while(1)

{P0=0x00;

if(P1!=0xff)

{a=P1;

switch(a)

{case 0xfe: P0=0x01;delay(3000);break;

case 0xfd: P0=0x02;delay(3000);break;

case 0xfb: P0=0x04;delay(3000);break;

case 0xf7: P0=0x08;delay(3000);break;

case 0xef: P0=0x10;delay(3000);break;

case 0xdf: P0=0x20;delay(3000);break;

case 0xbf: P0=0x40;delay(3000);break;

case 0x7f: P0=0x80;delay(3000);break;

}}

}}

void delay(uint z)

{uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

不需要中断,因为你按键速度不可能打到微秒,所以用普通扫描就应该可以了,三秒的话当然就用定时器了。你需要的话我可以晚上写一个看看,需要的话留下邮箱。

编好了,看看:

参考一下 这个仿真实例

51单片机 如何检测某个引脚是否为高低电平 求一个C源程序实例

用LED指示引脚状态。要求:一个51小系统版,一个LED,一个1K~10K的电阻(4.7K)。

+5V电源接到LED的正极,串联一个4.7K电阻,接到单片机的引脚上(如P0.1口)。该电路功能:当单片机输出低电平时,小灯亮;单片机输出高电平时,小灯不亮。编程序观察现象。

程序:

void main()

{it LED=P0^1;

void delayms(unsigned mx)

{unsigned int i,j;

for(i=mx;i>0;i--)

for(j=100;j>0;j--);

}while(1)

{LED=1; //此时LED不亮,说明这个引脚是高电平。

delayms(1000);

LED=0; //此时LED亮,说明这个引脚是低电平。

delayms(1000);

}}

你若想单纯的去检测正在运行单片机的IO口的电平状态的话,直接用LED接到该IO口观察LED的状态即可。如果事先知道该IO口的电平时固定的,拿更好办了,直接用万用表测。

假如你要检测的脚是P2.0, C51如下:

it P20 = P2^0;

.....

if(P20==1)

{......

}

sibt P1.1=P1^1;

void main()

{while(1)

if(P1.1=1)

.........

else........

}

判断端口是1还是0.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, b19126499425@163.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息