学习51单片机的第一天
使用书籍《51单片机典型项目实战-全能一本通(张毅刚)》
在大学的时候简单学过一点51基础知识,也有一点C语言的基础,可是基本上都忘完了,现在重新从零开始学习。
使用工具
使用的工具Proteus 8 Professional 进行仿真,同时变成软件是Keil uVision4;
值得注意的是,当我在W10系统上安装Proteus 8 Professional后,运行仿真产生错误;
错误内容:
原因是我的系统的用户名是中文,即使我把用户名改成英文还是不行,因为我是先安装的Proteus 8 Professional ,我的中文名的系统文件夹已经生成;所以采用修改环境变量的办法处理。
这个办法我是参考的:
解决proteus仿真时出现的错误 Cannot open ‘C:\User***\AppDate\Local\Temp\LISA4832.SDF’.
电路图及代码
画了一个简单的电路图;用P1口控制LED灯;
#include <reg51.h> // 引入51单片机寄存器及相关定义
#include <intrins.h>
/* 引入intrins字符循环等操作
_crol_ 字符循环左移
_cror_ 字符循环右移
_irol_ 整数循环左移
_iror_ 整数循环右移
_lrol_ 长整数循环左移
_lror_ 长整数循环右移
*/
#define uint unsigned int // 宏定义无符号 的int
#define uchar unsigned char // 宏定义无符号 的char
void delay(uint i) //定义一个软件毫秒ms延时函数
{
uchar t;
while (i--)
{
for (t=124;t>0;t--);
}
}
//主函数
void main()
{
P1=0xfe; //初始化P1口为11111110 ,也就是LED1点亮
while(1) //让程序跑起来
{
delay(500); //延时500ms
P1=_crol_(P1,1); //_crol_ 字符循环左移 也就是P1为11111101;点亮LED2
}
}
效果就是下面这样