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语言的语句,分号是语句结束的标志。