导航:首页 > 操作系统 > 单片机自用程序架构

单片机自用程序架构

发布时间:2022-08-25 13:42:47

单片机的内部构造及其工作原理是什么

单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
单片机的工作过程
单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条执行的指令的过程,所谓指令就是把要求单片机执行的各种操作用的命令的形式写下来,这是在设计人员赋予它的指令系统所决定的,一条指令对应着一种基本操作;单片机所能执行的全部指令,就是该单片机的指令系统,不同种类的单片机,其指令系统亦不同。为使单片机能自动完成某一特定任务,必须把要解决的问题编成一系列指令(这些指令必须是选定单片机能识别和执行的指令),这一系列指令的集合就成为程序,程序需要预先存放在具有存储功能的部件——存储器中。存储器由许多存储单元(最小的存储单位)组成,就像大楼房有许多房间组成一样,指令就存放在这些单元里,单元里的指令取出并执行就像大楼房的每个房间的被分配到了唯一一个房间号一样,每一个存储单元也必须被分配到唯一的地址号,该地址号称为存储单元的地址,这样只要知道了存储单元的地址,就可以找到这个存储单元,其中存储的指令就可以被取出,然后再被执行。 程序通常是顺序执行的,所以程序中的指令也是一条条顺序存放的,单片机在执行程序时要能把这些指令一条条取出并加以执行,必须有一个部件能追踪指令所在的地址,这一部件就是程序计数器PC(包含在CPU中),在开始执行程序时,给PC赋以程序中第一条指令所在的地址,然后取得每一条要执行的命令,PC在中的内容就会自动增加,增加量由本条指令长度决定,可能是1、2或3,以指向下一条指令的起始地址,保证指令顺序执行。

㈡ 单片机程序设计结构有哪些

单片机程序设计结构一般都是由连续结构以及规划结构,这两个结构是非常好的

㈢ 谁能帮我讲解单片机前后台系统设计的一般流程

前后台程序不是楼上说的那个意思..

前后台程序一般指着是没有 操作系统的 程序,,

所谓的前台.就是主动去判断某个事务..这个是主循环里面要干的.
也你就是代码主要要写的,

后台..指的是,中断,也就是不需要你的cpu去判别..他会自动进入某一种状态.
你在这个状态下干什么你要干事就可以了.

至于架构.如果是小系统的话.其实也没有什么架构可以说的.
能完成任务就好了.
主要代码写的规范一点.

稍微大一点的系统...
分好模块一步一步做....然后弄个大循环组合一下.

单片机毕竟不是pc ,所拥有的资源比较有限..没有一种通用的方法.
毕竟要根据你项目的大小,,mcu本身的ram rom等资源,,
有时候明知道这样写代码结构不好,,但是rom或ram或时间有限.
只好如此写了.

㈣ 谁来分享下STM32的程序框架

首先我对框架的看法:框架是为了方便我们程序员开发 减少代码量,及代码质量的工具 。框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法。

也就说,程序框架更多的从代码可用性角度来定义,对于应用层,这样的概念很多,比如java开发框架,net框架等等,在单片机里面,我认为:可能更多的框架应该是面向硬件操作行为,即做好单片机基本硬件模块的操作函数,封装成一个API函数,然后再你main route里面使用这些API函数的接口,建立与外界的联系。

我一般的做法是:

1.做好基本数据结构的重定义,比如typedef一些基本数据类型,使之能够通用。。

2.做好所有端口的映射,因为单片机的管脚是很多是复用的,做好这些cross-pin,对于复用很有帮助。。

3.做好涉及部件接口的操作函数接口,比如IIC总线,做好IIC总线操作的代码,包括read,write函数;

4.做好基本的通用函数接口,比如延时功能,串口调试功能,这些功能接口尽量做到与通用匹配,比如使用delay_ms(),sprintf等等;

5.每一个接口对应一个C文件和H文件,这样组织框架很容易,而且也容易寻找不同接口包含在那些文件里面。。

其他的,就是自己的一些开发习惯了吧。。

㈤ 请各位各位江湖人士帮忙,求有关单片机的程序

ORG 00H
AJMP MAIN
ORG 0BH
AJMP T0_SEVER
ORG 30H
MAIN:;主程序
MOV P1,#00H
CLR P3.0
CLR P3.1
CLR 00H;初始化显示,关显示
MOV R0,#99;装初值
MOV R1,#00H;显示低位
MOV R2,#00H;显示高位
MOV DPTR,#TABLE;LED显示段位码首地址
MOV TMOD,#01H;T0定时方式1
MOV IE,#82H;开T0中断
MOV TL0,#LOW(65536-5000)
MOV TH0,#HIGH(65536-5000);装定时初值,定时5ms
SETB TR0;启动定时器
LOOP:
MOV A,R0
MOV B,#10
DIV AB
MOV R1,B;显示低位暂存
MOV R2,A;显示高位暂存
ACALL DELAY1S;调用1s延时子程序
DJNZ R0,LOOP;判断倒计时是否完毕
AJMP MAIN;循环执行
DELAY1S:;延时1s子程序
MOV R7,#20
DEL1:
MOV R6,#100
DEL2:
MOV R5,#248
DJNZ R5,$
DJNZ R6,DEL2
DJNZ R7,DEL1
RET
T0_SEVER:;中断服务子程序
JB 00H,LOOP1;判断显示标志位
SETB P3.0
CLR P3.1
MOV A,R1
MOVC A,@A+DPTR
MOV P1,A;显示低位
SETB 00H;置显示标志位
AJMP RETURN
LOOP1:
CLR P3.0
SETB P3.1
MOV A,R2
MOVC A,@A+DPTR
MOV P1,A;显示高位
CLR 00H;清显示标志位
RETURN:
MOV TL0,#LOW(65536-5000)
MOV TH0,#HIGH(65536-5000);重装定时器初值
RETI
TABLE:;LED显示段码表
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
C51代码的程序实时性不好,时间不准,望指出问题。
/*程序名:99~0倒计时程序*/
/*程序功能:用P1口和P3.0、P3.1口实现动态显示,完成99~0的倒计时功能*/
/*作者:严峥晖*/
#include<at89x51.h>
typedef unsigned char uchar;
uchar code led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
bit bdata flag="0";
uchar data high_dis,low_dis;
void delay(void)//延时子函数
{
uchar i,j,k;
for(i=0;i<=20;i++)
for(j=0;j<=100;j++)
for(k=0;k<=248;k++);
}
void init(void)//初始化函数
{
P1=0x00;
P3_0=0;
P3_1=0;
IE="0x82";
TMOD="0x01";
TL0=(65536-5000)%256;
TH0=(65536-5000)/256;
TR0=1;
}
void calc(uchar time)//计算显示高低位
{
high_dis=time/10;
low_dis=time%10;
}
void sever_t0(void) interrupt 1//中断服务子程序
{
if(flag==0)
{
P3_0=1;
P3_1=0;
P1=led[low_dis];
flag=~flag;
}
else
{
P3_0=0;
P3_1=1;
P1=led[high_dis];
flag=~flag;
}
TL0=(65536-5000)%256;
TH0=(65536-5000)/256;
}
int main(void)//主函数
{
uchar i="99";
init();
do
{
calc(i);
delay();
i--;
}
while(i>=0);
}

㈥ 单片机RISC结构是什么

.CISC(complex instruction set computer)即复杂指令集,在20世纪90年代前被广泛的使用,其特点是通过存放在只读存储器中的微码(microcode)来控制整个处理器的运行。
一条指令往往可以完成一串运算的动作,但却需要多个时钟周期来执行。随着需求的不断增加,设计的指令集越来越多,为支持这些新增的指令,计算机的体系结构会越来越复杂。然而,在CISC指令集的各种指令中,其使用频率却相差悬殊,大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的80%的指令却不经常使用,在程序设计中只占20%,显然,这种结构是不太合理的。
RISC和CISC在构架上有着几个不同的地方。
1)首先是指令集的设计上,RISC构架的指令格式和长度通常是固定的(如ARM是32位的指令)、且指令和寻址方式少而简单、大多数指令在一个周期内就可以执行完毕;CISC构架下的指令长度通常是可变的、指令类型也很多、一条指令通常要若干周期才可以执行完。由于指令集多少与复杂度上的差异,使RISC的处理器可以利用简单的硬件电路设计出指令解码(decode)功能,这样易于流水线的实现。相对的CISC则需要通过只读存储器里的微码来进行解码,CISC因为指令功能与指令参数变化较大,执行流水线作业时有较多的限制。
2)其次,RISC在结构设计上是一个载入/存储(load/store)的构架,只有载入和存储指令可以访问存储器,数据处理指令只对寄存器的内容进行操作。为了加速程序的运算,RISC会设定多组的寄存器,并且指定特殊用途的寄存器。CISC构架则允许数据处理指令对存储器进行操作,对寄存器的要求相对不高。
RISC(精简指令集计算机)和CISC(复杂指令集计算机)是当前CPU的两种架构。它们的区别在于不同的CPU设计理念和方法。
早期的CPU全部是CISC架构,它的设计目的是要用最少的机器语言指令来完成所需的计算任务。比如对于乘法运算,在CISC架构的CPU上,您可能需要这样一条指令:MUL ADDRA, ADDRB就可以将ADDRA和ADDRB中的数相乘并将结果储存在ADDRA中。将ADDRA, ADDRB中的数据读入寄存器,相乘和将结果写回内存的操作全部依赖于CPU中设计的逻辑来实现。这种架构会增加CPU结构的复杂性和对CPU工艺的要求,但对于编译器的开发十分有利。比如上面的例子,C程序中的a*=b就可以直接编译为一条乘法指令。今天只有Intel及其兼容CPU还在使用CISC架构。
RISC架构要求软件来指定各个操作步骤。上面的例子如果要在RISC架构上实现,将ADDRA, ADDRB中的数据读入寄存器,相乘和将结果写回内存的操作都必须由软件来实现,比如:MOV A, ADDRA; MOV B, ADDRB; MUL A, B; STR ADDRA, A。这种架构可以降低CPU的复杂性以及允许在同样的工艺水平下生产出功能更强大的CPU,但对于编译器的设计有更高的要求。

㈦ 单片机解曼彻斯特 码的C程序构架

呵呵,问题有技术含量,一般有这方面的
软件操作吧,我们工作用过那种局域网,可以在主机上生成代码直接传输到单片机上,不好意思,我不知道
什么c
程序构架,我
了解的是现在的程序都是
认为控制设计出来的,实际运行的
还是某些条代码

㈧ 单片机C语言编程的main函数整体构架是什么样子

这个要看具体功能,某些程序顺序执行,最后结束或者等待中断,某些程序是死循环。如
void main()
{
语句段1;
语句段2;
......
while(1)
{循环体;}
}

㈨ 单片机的cpu采用的什么架构

8051单片机是CISC
计算机的x86处理器是表面上是CISC,但是RISC结构的。
PIC、AVR、ARM单片机就是RISC的了。

阅读全文

与单片机自用程序架构相关的资料

热点内容
和平精英苹果转安卓怎么转不了 浏览:52
伟福单片机实验箱 浏览:154
广东加密货币 浏览:216
利用python批量查询系统 浏览:497
什么app看左右脸 浏览:302
台湾小公主s解压密码 浏览:568
易语言锁机软件源码 浏览:156
迅雷下载完成无法解压 浏览:592
硬盘分区命令图解 浏览:447
当前云服务器如何关闭 浏览:78
mac下python在哪 浏览:641
广东惠州DNS服务器地址 浏览:357
编译影片时软件渲染错误 浏览:625
流星蝴蝶剑解压失败 浏览:294
如何确认方舟编译器 浏览:664
奶粉源箱源码什么意思 浏览:178
台州程序员兼职一般去哪些网站 浏览:408
旧版本怎么下载到新的安卓 浏览:972
flash个人网站源码下载 浏览:725
javasocketbyte 浏览:270