我的第一个单片机程序

距离我上一次碰单片机已经5年过去了,我那时始终没有自己写程序塞进单片机运行,只是通电运行了一下单片机内置的程序。

我记得是因为我买的面包板太小了,导致单片机没地方插,像之前那样把线和单片机的脚一起插进洞洞板的孔里的方法太不稳了,而且也不方便,于是就没再继续搞下去了。

而且那个isp下载器还被我接了十几个led当灯用了。

现在买树莓派顺便搞了个长的面包板回来,所以这次就来试试自己写个程序塞进去运行吧。

首先装好Keil,并且准备好写入工具STC-ISP,掏出我5年没碰的STC89C52RC来,找一份引脚说明:

拿出usb串口,供电按照曾经的文章给单片机接上,收发端接上10和11口,按曾经的文章接上晶振,在1和2脚上接个led,亮了。检查完毕,还没坏。

现在在stc-isp里选择这种型号之后会提示已经不推荐使用了,但是我既然手上有那么多,那就凑活着用呗。

 

然后开始在keil里新建个项目写个程序,

#include "reg52.h"
#include <intrins.h>

//获取p10和p11引脚
sbit p10=P1^0;
sbit p11=P1^1;

void Delay10us()		//@12.000MHz,此延时函数由STC-ISP根据单片机参数生成
{
	unsigned char i;

	_nop_();
	i = 2;
	while (--i);
}


int main(){
	p10=0;//p10设置低电压
	p11=1;//p11设置高电压
	while(1){//开始无限反转两个引脚的电平状态
		p10=~p10;
		p11=~p11;
		Delay10us();
	}
}

然后把两个led以相反方向接在p10和p11上。

在keil中编译程序,用stc-isp写入单片机,程序开始执行。可以看到两个led虽然相反方向接在引脚上,但是程序使两个引脚输出了迫真交流电,所以两个灯看起来是同时亮着的。

如果不写延时的话会发现只亮一个led,可能是因为切换太快了(但是开关反应不过来

 

最后实体看起来就是这个样子。(底下那个树莓派扩展板与此文无关

如果把延迟设置得大一点(比如半秒)可以看到的效果是两个led轮流亮起再熄灭。



本文发布于 https://luojia.me

本站文章未经文下加注授权不得拷贝发布。

0 0 投票数
打分
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论