控制系统各部件的初始化和实现各功能子程序的调用。根据道客巴巴官网查询。单片机程序不是从零开始,而是先对已有的相关程序进行阅读分析。分析程序是设计、修改、优化、维护的重要步骤。因此,掌握单片机程序的分析方法是非常必要的。头文件,变量声明,函数声明,子函数,主函数这几部分组成,头文件其实就是一种声明,将单片机中的一些常用的符号变量进行定义声明,对一些特殊功能寄存器进行声明,对一些关健字进行定义,比如我们常用的P0口,在写程序的时候你就不用在去定义这个符号,不用把它的字节地址给这个符号了。
#include<reg51h>
sbit led=P1^0; //单片机管脚位声明
void main()
{
TMOD=0x01; //定时器TO工作在方式1
TH0=(65536-5000)/256; //装初值,12M晶振 1为1us; 5000为5000us=5ms;
TL0=(65536-5000)%256;
EA =1; //开总中断
ET0=1; //开定时器TO中断
TR0=1; //启动定时器
P1=0; //初始化P1口
while(1) ; //程序在这里等待中断发生
}
void T0_time() interrupt 1
{
unsigned char num;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
num++;
if(num==100) //05S (1s闪烁1次==05S亮05S灭)
{
num=0;
led=~led; //led状态取反
}
}
单片机程序有主程序和子程序部分组成,外加
头文件
头文件的内容完全可以放到C文件里去,但是C语言是模块化编程,讲一些定义什么的定义到头文件,不同的功能用不同的C文件,这样更加清晰科学。
本文主要讲解51单片机的硬件结构,而且只介绍重点知识。
由上图可以看出,51单片机组成结构包括以下几个部分:
时序信号:一类用于片内各功能的部件的控制,另一类用于片外存储器或IO端口的控制(这个对用户来说是比较重要的,在定时器部分会讲)
通过修改PSW中的RS1、RS0两位的状态,就能任选一个工作寄存器区。这个特点提高了MCS-51现场保护和现场恢复的速度。对于提高CPU的工作效率和响应中断的速度是很有利的。若在一个实际的应用系统中,不需要四组工作寄存器,那么这个区域中多余单元可以作为一般的数据缓冲器使用。
按存储结构可分为二类:一类是哈佛结构,另一类是普林斯顿结构。
①哈佛结构
哈佛结构是程序存储器地址空间与数据存储器地址空间分开的单片机结构,如80C51单片机采用哈佛结构,所以80C51单片机的程序存储器地址空间与数据存储器地址空间是分开的,各有64K存储空间。
②普林斯顿结构
普林斯顿结构是程序存储器地址空间与数据存储器地址空间合并的单片机结构,如MCS-96单片机采用普林斯顿结构,所以MCS-96单片机的程序存储器地址空间与数据存储器地址空间是合并的,共有64K存储空间。
P3口还有第二功能,表如下:
若TI 或 RI 被置位,必须用软件清零,硬件不能将其清零。
在不设置IP优先级寄存器的话,单片机内部会按这个默认顺序优先级去响应各个中断。
上电复位后除端口锁存器,堆栈指针,SBUF外,单片机内部的复位电路向所有的特殊功能寄存器写入00H。SBUF的值是不能确定的。
复位还使ALE和PSEN信号变为无效(高电平),而内部RAM不受影响。但由于VCC上电复位后,RAM内容不定,除非是退回低功耗方式的复位。
在汇编语言里
中断程序首先有入口地址(比如ORG 0003H) 之后是中断处理语句 最后有一个返回指令RETI;
例如:
ORG 000BH
LJMP TION
MOV R4,#0
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
SETB EA
SETB ET0
WAIT: SJMP WAIT
TION: INC R4
CJNE R4,#10,timer
timer:MOV TH0,#3CH
MOV TL0,#0B0H
RETI
如果你说的是C51
中断程序结构如下:
void 中断程序名(void) interrupt n using m //确定中断源和中断程序所用寄存器
{
// 中断处理部分
}
例如:
void Time0_int(void) interrupt 1 using 1
{
uchar led,i;
led=0xfe;
P1=led;
delay(500);
for(i=0;i<8;i++)
{
led=(led<<1)|0x01;
P1=led;
delay(500);
}
}
以上就是关于单片机主程序流程图的作用全部的内容,包括:单片机主程序流程图的作用、编写一个完整的单片机C51程序、单片机程序有哪几部分组成头文件的作用是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)