“点亮一颗LED”
新建项目(建立工程)
Step1: Project->New μVersion Project 选择芯片
Step2: ctrl + N -> ctrl + s 保存为.c
Step3: Click Source Group 1-> Add Existing files…..
Step4: Write the code
1 |
|
Step5: 先勾选 Create hex files
再 Rebuild
Step6: Downoad STC-ISP
http://www.stcmcu.com/index.htm
Step7: choose the chip
choose the file
download into the chip
几种不同的延时方法
首先说说单片机最小系统能运行起来的必要条件有三:
1.电源 2.晶振(心脏) 3.复位电路
其中晶振是类似于单片机心脏的一个东西,提供时钟脉冲信号的振荡源的周期,即时钟周期,我所用的stc89c52时钟周期是11.0592MHz,相当于数电中所说的CLK, 作为一个固定的基准,只有在每个上升沿才进行计算,所以利用简单的循环语句,就可以实现延时的功能
while语句:
a=51000; p1_1=0; while(a--);
借用软件 for语句嵌套,精确计算延时(↓这是800ms延时的子函数):
void delay800ms(void) { unsigned char a,b,c; for(c=95;c>0;c--) for(b=138;b>0;b--) for(a=29;a>0;a--); _nop_(); //if Keil,require use intrins.h _nop_(); //if Keil,require use intrins.h }
单片机工作的基本时序
机器周期 指令周期
- 振荡周期: 时钟周期 11.0592MHz 提供时钟脉冲信号的振荡源的周期
- 状态周期: 振荡周期二分频所得 为时钟周期的两倍
- 机器周期: 一个机器周期=12个时钟周期
- 指令周期:完成一条CPU指令所需的全部时间,由1~几个机器周期组成。 单周期指令 双周期指令 四周期指令
流水灯
在实现流水灯时用了一个非常神奇(快速)的方式,Led点阵正好有8个,二进制 1111 1110 对应的就是这八个针脚的电平高低,转化为16进制是0xfe(0x代表十六进制,fe代表1111 1110)。希望实现流水灯的效果,即将低电平位循环左移(led点阵一段共阳,所以低电平驱动)
//8bits
void delay(uint);
void main()
{
temp=0xfe; //1111 1110
P2 = temp ;
while(1)
{
temp=_crol_(temp,1); // 移位
delay(600);
P2=temp;
}
}
void delay(uint z)
{
uint x,y;
for(x=100;x>0;x--)
for(y=z;y>0;y--);
}
uchar temp;
其他尝试
这几天还尝试了动态静态数码管、蜂鸣器、超声波测距。。。等但模块,实现方式大同小异,注意点无非是看原理图注意针脚,驱动电平等等等,就不赘述,这些算是最最最基础的入门小问题了,接下来可能要根据你校课程大纲改改学习方向(逃