导航:首页 > 操作系统 > 语句单片机

语句单片机

发布时间:2022-06-20 06:35:44

单片机c语言中switch语句的用法

count=0; 是清零,去掉换成三颗LED上电清零复位没看明白```

⑵ 单片机中IF语句的使用

1、if...else
语句
除了要在括号里条件满足时执行相应的语句外,在不满足该条件的时候,也要执行一些另外的语句,这时候就用到了
if...else
语句,它的基本语法形式是:
if
(条件表达式){
语句
1;
}else{
语句
2;
}
2、if...esle
语句
if...esle
语句是一个二选一的语句,或者执行
if
分支后的语句,或者执行
else
分支后的语句。还有一种多选一的用法就是
if...else
if
语句。他的基本语法格式是:
if
(条件表达式
1){语句
1;}
else
if
(条件表达式
2)
{语句
2;}
else
if
(条件表达式
3)
{语句
3;}
...
...
else{语句
n;}
他的执行过程是:依次判断条件表达式的值,当出现某个值为“真”时,则执行相对应的语句,然后跳出整个
if
的语句块,执行“语句
n”后面的程序;如果所有的表达式都为“假”,则执行
else
分支的“语句
n”后,再执行“语句
n”后边的程序。
if
语句在
c
语言编程中使用频率很高,用法也不复杂,所以必须要熟练掌握。

⑶ 单片机判断语句有哪些

条件判断语句:if语句、switch语句、condition ? exp1 : exp2(问号表达式)
循环语句:for语句、while语句、do...while
跳转语句:continue、break、goto
开关语句:switch语句

⑷ 单片机语句if((P2IN&BIT5) < 1) 是什么意思

推测是msp430单片机C语言程序,这个句子的意思就是P2IN与BIT5逻辑与运算,这两个变量的定义查看头文件就可以了。网页链接

⑸ 单片机语句分析详解。

#include <reg52.h> //头文件包含
#define SYSCLK 12000000 //宏定义:用SYSCLK代表12000000这个数字
#define c_tmr1 -(SYSCLK/12.0)/1000*50//宏定义:用//c_tmr1
//-(SYSCLK/12.0)/1000*50
//这个语句
#define TIMES_50MS 10 //宏定义:用TIMES_50MS代表10
float data FREQ; //变量声明:浮点型变量FREQ
unsigned char data TMR0_COUNTER;// 变量声明:无符号字符型变量TMR0_COUNTER
unsigned char data TMR1_COUNTER;// 变量声明: 无符号字符型变量TMR1_COUNTER
bit START_EN; //位变量声明:
unsigned int data tmr1; //变量声明: 无符号整形变量tmr1
void start(void); //函数声明
void main(void) // 主函数体
{
TMOD|=0x15;//设置TMOD寄存器为:16位定时器模式+16位计数器模式
ET0=1;//打开计数器0
ET1=1;//打开定时器1
tmr1=c_tmr1;//给tmr1赋初值
START_EN=1;/ 位变量=1(应该是用作标志位置1)
while(1)//大循环
{
if(START_EN) //如果标志位为1
{
START_EN=0;//先清除标志位

start();//然后运行这个函数程序
}
}
}
void start(void)//函数体
{
TMR0_COUNTER=0;//变量赋初值
TMR1_COUNTER=TIMES_50MS;// 变量赋初值=10
TH0=0; //计算器0的高8位清零
TL0=0; //计算器0的低8位清零
TH1=tmr1>>8; //定时器1的高8位赋值(宏定义计算好麻烦)
TR1=tmr1; //定时器1的低8位赋值(应该是TL1= tmr1)
TR0=1; //打开定时器0
TR1=1; //打开计数器1
TF0=0; //TF0是由硬件自动设置没有必要可以去掉
TF1=0; //TF1是由硬件自动设置没有必要可以去掉
EA=1; 打开总中断开关
}
void tmr0_ISR(void)interrupt 1//计数器0中断服务函数(16位计数器)
{
TMR0_COUNTER++;// TMR0_COUNTER变量自动++(0~255)
}
void tmr1_ISR(void)interrupt 3//定时器1中断服务函数(16位定时器)
{
unsigned int data i;
if(--TMR1_COUNTER==0)//如果变量自减==0(本来赋值为10)
{
TR0=0;//关计数器0
TR1=0;//关定时器1
EA=0;//关总中断(我一般不用这句)
FREQ=(TMR0_COUNTER*65536+TH0+256+TL0)*20;
//计算FREQ(搞不懂这里面计算他干什么)
FREQ=FREQ/TIMES_50MS;
//计算FREQ(搞不懂这里面计算他干什么)
START_EN=1;//标志位置1
}
Else//否则
{
TR1=0; //关定时器1
i=tmr1+TL1+16;//以下3句设置定时器1初值
TL1=i;
TH1=i>>8;
TR1=1;//开定时器1

}
}
结语:这个程序其实很简单,却写的如此复杂,并不是作者水平高,而是不愿意正在的教人家而已,强烈比赛他!!!

⑹ 单片机C语言,问题一:while(语句){语句}与while(语句);语句 是什么区别,程序是

首先问题一:while(语句){语句}中小括号中的语句是判断真假,如果为真,则执行大括号中的语句,如果为假,则不执行下面的语句。while(语句);中的语句也是一个判断,当小括号中的语句表达式值不为0时,就一直判断,直到里面的表达式值为0时结束判断,去执行下一步的程序;
对于问题二:
while(!k1);
语句1;
while(!k2);
语句2;
对于这个程序段,只要是没有把它放在一个循环里面,也就是说让这个程序顺序执行一次就不再去执行这个段,就能实现你想要的功能。因为这几个语句是顺序执行的,所以在执行语句2之前,必须得经过语句1,语句2是不能在语句1之前执行的。同时也实现你需要的K1、K2不为0则检测,为0则不再检测,继续执行下面语句的要求。使用的是你询问的问题一中第二种循环方式。

⑺ XRL单片机汇编语句啥意思

为解决某些特定的问题代码中必须嵌入汇编语言以代替C语言完成的单片机的编程,汇编语言对于程序调试是不可或缺的。它包括:算术操作类指令,布尔变量操作类指令,逻辑操作数指令,控制转移类指令。

逻辑异或指令,即相对应的二进制位不同该位异或后的结果是1,相同则为0。

XRL A,#data;累加器A中的容容和立即数执行逻辑异或操作。结果存放在累加器A中,如A中的内容为10010101B,data为10110110B,则运算的结果为00100011。

(7)语句单片机扩展阅读:

对于程序调试汇编语言更是不可或缺。

直接使用汇编指令编写单片机程序,对硬件的控制更加直接,可以直接操作物理地址,寄存器,端口等;其它更高级的语言(如:C语言)对硬件的控制是依赖于类库来实现的。并且,对于一些对程序大小和运行速度有非常严苛要求的项目而言,都必须使用汇编指令。

C语言只是为了方便编写,与机器打交道的其实都是2进制得代码,汇编语言就是这些代码好记忆的名称和规则,只是比C语言难理解些。

⑻ 单片机如何写绝对值语句

单片机如何写绝对值语如下说明。

C语言abs()函数用于求整数的绝对值。fabs()函数用于求双精度浮点数的绝对值。abs() 数调用添加头文件math.h或者stdlib.h,fabs()函数调用添加头文件math.h。

1,#include<stdio.h>。

2,#include<math.h>。

3,int main()。

4,{ int a = -3, b。

5,float c=-5.2, d,e。 //为变量赋初值。

6,b = abs(a)。 //求a的绝对值。

7,d = abs(c)。 //求b的绝对值。

8,e=fabs(c-a)。

9,printf("%d %d ", c, d)。

10,return 0}。

当前的单片机种类很多,但是51是最基础的,因此单片机的学习最好也是从51开始,不仅容易上手,而且相当实用。然而51单片机毕竟过于基础,后来的很多单片机在功能上都有很大的扩展,因此按照我们实验室多数人的路线接下来大多数人会学习AVR单片机, AVR单片机在功能上较51有很大提升,集成了AD,快速PWM等很多实用的功能,而且和很多大型的单片机在功能上有很多类似之处,因此如果以后还想掌握其他单片机AVR无疑是一个很好的跳板。现在因收购的原因可以学微芯的单片机。

学习单片机最终要的是当然是练,我所说的学习跟课堂上的单片机学习不同,我以前也看过一些单片机教材,有些教材讲的是单片机的工作原理和内部结构,这些东西对于我们暂时并不需要,等以后开课的时候在学习好了。现在要学习的是暂时抛开内部结构原理不谈,如何能用单片机写一些简单的小程序,是从实用性的角度出发,先实践后理论的学习方法,最主要是培养兴趣。

⑼ 单片机的while(1)语句

你第二种理解大致是对的,第一种因试情况而定
我所理解的单片机中的while(1)大致用途:
while(1);
意义:这是一个死循环,代码不再向下执行。
用途:
1. 一般在调试代码时,为了检测一部分代码是否OK,防止后面的代码干扰执行结果,会在观测点加上while(1);
2. 有些代码检测到运行错误时,会抛出错误(打印、设置错误码),然后进入while(1);
3. 机器需要复位时,停止喂看门狗,进入while(1); 迫使看门狗超时,产生硬件复位

while( 1 ) { 代码 }
意义:这里将会重复执行{}中的代码
用途:
1. 单片机在不使用操作系统时,主程序一般都使用这种架构
2. 操作系统中的进程,执行任务时,有些也会使用这种架构
3. {}中的代码不停地检测某个条件,当条件符合时,跳出该循环,继续向下执行

⑽ 单片机中程序每条语句的意思

ORG
000H
;设置程序存储区初始地址的伪指令
LJMP
MAIN
;跳到main语句,绕过中断入口
ORG
1000H
;设置程序存储区初始地址的伪指令
MAIN:
MOV
SP,#60H
;堆栈入口地址
MOV
81H,#50H
;把立即数50H送到数据区81H地址
MOV
R0,#20H
;把立即数20H送到R0
MOV
@R0,#45H
;寄存器间接寻址,把45H送到R0存的数据对应的地址
;就是20H这个地址
INC
R0
;R0加一
MOV
@R0,#74H
;寄存器间接寻址,把74H送到R0存的数据对应的地址
;就是21H这个地址
MOV
R1,#30H
;把30H送到R1
MOV
@R1,#67H
;寄存器间接寻址,把67H送到R1存的数据对应的地址
;就是30H这个地址
INC
R1
;R1加一
MOV
@R1,#28H
;寄存器间接寻址,把28H送到R1存的数据对应的地址
;就是31H这个地址
CLR
C
;清除符号位
MOV
R2,#02
;把2送到R2
L2:ACALL
L1
;调子函数L1
DEC
R0
;R0减一
DEC
R1
;R1减一
DJNZ
R2,L2
;如果R2减到0,就执行下一句,否则跳到L2
CLR
A
;累加器清零
MOV
ACC.0,C
;把符号位移到累加器的第零位
NOP
;延时一个周期
MOV
@R0,A
;寄存器间接寻址,把A里的数据传送到R0对应的地址
L3:
SJMP
L3
;死循环
L1:
MOV
A,@R0
;寄存器间接寻址,把R0对应的地址
;里的数据传送到
A
ADDC
A,@R1
;把R1里存放的地址里的数据和A相加,再加进位位。
DA
A
;十进制调整指令
MOV
@R0,A
;寄存器间接寻址,把A里的数据传送到R0对应的地址
RET
;
子程序返回
END
;结束

阅读全文

与语句单片机相关的资料

热点内容
php中怎么注释 浏览:994
adxl345与单片机 浏览:281
服务器世界第一是什么公司的 浏览:21
精通编程入门 浏览:16
99单片机原理 浏览:61
linuxssh互信 浏览:288
支持128加密的浏览器 浏览:293
程序员下载器 浏览:48
退出云服务器代码 浏览:900
军状如命令 浏览:263
如何安卓系统更新 浏览:74
linux命令在哪里输入 浏览:497
编程语言集合类怎么选 浏览:93
如何将pdf转化为word 浏览:11
迈克菲隔离区解压密码 浏览:785
怎么用伟福编译 浏览:867
计算机算法专家 浏览:501
什么app清理垃圾 浏览:643
android流媒体服务器 浏览:183
各种算法的时间复杂度是指 浏览:116