返回首页

单片机main是什么意思(单片机中main是什么意思)

来源:www.haichao.net  时间:2022-12-14 08:53   点击:252  编辑:admin   手机版

1. 单片机main是什么意思

ACALL是51汇编的子程序调用指令,其使用范围是±2K范围,超出这个范围的调用将会出错,这时可以使用LCALL即长调用语句。调用格式如下:ACALL标号(子程序名)

例程:ORG0000HLJMPMAINORG000BHLJMPT0ISRMAIN:MOVSP,#5FHACALLINIT;调用初始化子程序SJMP$INIT:MOVTMOD,#01HMOVTH0,#HIGH(65536-1000)MOVTL0,#LOW(65536-1000)SETBTR0SETBET0SETBEARETT0ISR:CPLP1.0RETIEND

2. 单片机中main是什么意思

SBUF是指串行口中的两个缓冲寄存器,一个是发送寄存器,一个是接收寄存器,在物理结构上是完全独立的,但地址是重叠的。它们都是字节寻址的寄存器,字节地址均为99H。

SBUF,全称:serial data buffer,中文名为串行数据缓冲器。这个重叠的地址靠读/写指令区分:串行发送数据时,CPU向SBUF写入数据,此时99H表示串行口的发送缓冲寄存器;串行接收数据时,CPU从SBUF读出数据,此时99H表示串行口的接收缓冲寄存器。

单片机串口参考程序

#include <reg52.h>

#include <absacc.h>

#define uint unsigned int //或者typedef unsigned int uint;

#define uchar unsigned char

uchar date;

uchar recFlag; //接收数据标识,0 未接收数据 1 接收数据

void init_serial();

void send();

void receive();

main()

{

init_serial();

IE=0; //屏蔽中断

while(1)

{

receive(); send();

}

}

void init_serial() //初始化串口

{

TMOD=0x20; //定时器T1使用工作方式2

TL1=250; //设置初值

TH1=250;

TR1=1; //开始计时

PCON=0x80; //SMOD=1;

SCON=0x50; //工作方式1,波特率9600bit/s,允许接收

TI=1;

}

void send()

{

if(TI==1) //检测输出是否READY

{

if(recFlag==1) //是否接收过数据

{

SBUF=date; //发送数据

recFlag=0;

TI=0;

}

}

}

void receive()

{

if(RI==1) //检测是否有数据接收

{

date=SBUF; //接收数据

recFlag=1; //设置接收标识符

RI=0;

}

}

3. 单片机main是什么意思网络用语

单片机开机基本步骤如下:

1.内核初始化;

2.强制PC指针指向中断向量表的复位中断向量执行复位中断函数;

3.在复位中断函数中调用 SystemInit 函数,初始化时钟,配置中断向量表等;

4.调用 main 函数完成全局/静态变量的初始化和重定位工作,初始化堆栈和库函数;

5.跳转到main函数中执行二 内核初始化在单片机上电后首先会进行一系列内核的初始化。

4. 单片机中main

仿照RT-Thread的自动初始化机制,写了一个自动初始化的模块,整个代码仅52字节。

好处:可以实现自动初始化,不用在外部显式地调用。

缺点:初始化逻辑较显式调用的方式模糊,容易引入BUG。

以下是对应的头文件和源文件,初始化顺序分为9级,LOADER_BOARD_EARLY_EXPORT最早,LOADER_APP_LATE_EXPORT最迟。使用方法可以看最后面的Demo。

#ifndef _LOADER__H

#define _LOADER__H

#if defined(__CC_ARM) || defined(__CLANG_ARM) /* ARM Compiler */

#define LOADER_USED __attribute__((used))

#define SECTION(x) __attribute__((section(x)))

#elif defined (__IAR_SYSTEMS_ICC__) /* for IAR Compiler */

#define LOADER_USED __root

#define SECTION(x) @ x

#elif defined (__GNUC__) /* GNU GCC Compiler */

#define LOADER_USED __attribute__((used))

#define SECTION(x) __attribute__((section(x)))

#endif

typedef int (*init_func_t)(void);

#define LOADER_EXPORT(fn, level) \

LOADER_USED const init_func_t init_##fn SECTION(".loader_fn."level) = fn

#define LOADER_BOARD_EARLY_EXPORT(fn) LOADER_EXPORT(fn, "1")

#define LOADER_BOARD_EXPORT(fn) LOADER_EXPORT(fn, "2")

#define LOADER_BOARD_LATE_EXPORT(fn) LOADER_EXPORT(fn, "3")

#define LOADER_COMPONENT_EARLY_EXPORT(fn) LOADER_EXPORT(fn, "4")

#define LOADER_COMPONENT_EXPORT(fn) LOADER_EXPORT(fn, "5")

#define LOADER_COMPONENT_LATE_EXPORT(fn) LOADER_EXPORT(fn, "6")

#define LOADER_APP_EARLY_EXPORT(fn) LOADER_EXPORT(fn, "7")

#define LOADER_APP_EXPORT(fn) LOADER_EXPORT(fn, "8")

#define LOADER_APP_LATE_EXPORT(fn) LOADER_EXPORT(fn, "9")

int LoaderExec(void);

#endif

#include "Loader.h"

static int loader_start(void)

{

return 0;

}

LOADER_EXPORT(loader_start, "0");

static int loader_end(void)

{

return 0;

}

LOADER_EXPORT(loader_end, "9.end");

int LoaderExec(void)

{

int res = 0;

const init_func_t *fn_ptr;

for (fn_ptr = &init_loader_start; fn_ptr < &init_loader_end; fn_ptr++)

{

res += (*fn_ptr)();

}

return res;

}

/* Loader Demo */

/********************** led.c **********************/

#include "Loader.h"

int led_init(void)

{

/* GPIO初始化 */

return 0;

}

LOADER_APP_EXPORT(led_init);

/********************** main.c **********************/

#include "Loader.h"

int main(void)

{

HAL_Init(); /* 初始化芯片底层,实际上该函数也可以通过loader导出 */

LoaderExec(); /* 加载Loader,里面会调用led_init */

while(1)

{

/* do something */

}

}

5. 单片机main是什么意思啊

如果是C,一般是#include等一些伪指令什么的。真正地程序开始肯定是main(){} 如果是ASM汇编语言,那么第一句一般是ORG XXXX,也可以再前面有一些定义和库的引导。

6. 单片机main函数

51单片机没有线程的概念,一般就是一个main函数,完成初始化之后,直接一个while(1的循环)。

7. 单片机main是什么意思中文

程序执行c语言是从main函数开始执行的,P0=0X01;是一个执行语句,不是定义变量、申明什么的,你放在外面八辈子都执行不到,所以编译器就会认为这是不科学的,嘿嘿,所以不能正确编译通过。

8. 单片机main.c

TEMP1 EQU 30H ;

TEMP2 EQU 31H ;

RAM_STA EQU 50H ;定义排序区域的首地址!

RAM_END EQU 70H ;定义排序区的结束地址!

ORG 0000H

AJMP MAIN

ORG 0030H

MAIN:

ACALL MIN_SORT; 调用由小到大排序的程序

SJMP $

MIN_SORT: ;排序函数

MOV R0,#RAM_STA; 用了两个指针,R0和R1,作用是在排序区中获得两个数比较和存放操作

MOV R1,#RAM_STA+1;先把首地址装好

LOOP: MOV A,@R0; 取出两个排序区单元内容放到暂存单元中

MOV TEMP1,A

MOV A,@R1

MOV TEMP2,A

ACALL MIN ; 调用MIN函数,对两个单元进行排序

INC R1; R1指向下一单元

CJNE R1,#RAM_END+1,LOOP; 一直比较到规定结束地址

INC R0; R0指向下一单元

MOV A,R0

INC A;

MOV R1,A R1指向R0的下一单元

CJNE R0,#RAM_END,LOOP; 全部判断结束?

RET 返回

MIN: ; 比较@R0与@R1二者大小,小的放@R0,大的放@R1

PUSH PSW ;保护程序状态

CLR C ;清进位标志,方便下面的操作

MOV A,TEMP1

SUBB A,TEMP2 ;两数相减

JC MIN_END ;有进位表示前者小于后者,否则要交换

MOV A,TEMP2 ;两数交换

MOV @R0,A

MOV A,TEMP1

MOV @R1,A

MIN_END:POP PSW ;恢复程序状态

RET ;返回

END

大概的排序方式为:先找出最小的放到最低RAM中(50H),这里是用最低RAM(50H)与其他RAM逐一比较,比它小的话就两者交换(这样50H中就始终是最小的),得到最小的,再找第二小的...一直判断下去,最后就实现了你要的效果了!

9. 编程main是什么意思

VC用的最多的就是视类和构架类,每个类又有头文件有源文件(实现文件),MainFrm就是框架类的实现文件。

10. 计算机main什么意思

main(),在c语言中称之为“主函数”,一个c程序有且仅有一个main函数,任何一个c程序总是从main函数开始执行,main函数后面的一对圆括号不能省略。

具体形式如下:

main() { }

被大括号{ }括起来的内容称为main函数的函数体,这部分内容就是计算机要执行的内容。

在{ }里面每一句话后面都有一个分号(;),在c语言中,我们把以一个分号结尾的一句话叫做一个c语言的语句,分号是语句结束的标志。

顶一下
(0)
0%
踩一下
(0)
0%