单片机数字循环程序(单片机循环函数)

海潮机械 2022-12-20 23:19 编辑:admin 297阅读

1. 单片机循环函数

51单片机有4条循环移位指令,包括左移RL A、RLC A和右移RR A、RRC A。这两种循环指令都是针对累加器A进行操作,特点都是循环位移,区别是方向不同。

以左移的两条指令为例,说明其操作:

RL A是将A中的数据按位向左移动一位,最高位循环致最低位。例如执行前A=10000110,执行后A=00001101。

RLC A是将A中的数据按位向左移一位,最高位移给cy,cy移给A的最低位。例如执行前A=10000110,cy=0,执行后cy=1,A=00001100。

2. 单片机循环结构

按复读健,选择三就可以了

3. 单片机循环函数是什么

单片机loop指令是循环指令

4. 单片机循环指令举例

整个程序中只能出先一次,在大括号里面放整个程序的所有函数,让单片机不停的循环所有的函数。

而你所说的暂停指令也是在一个地方等待,单是必须要有条件跳出循环。例如while(判断条件); 当条件为真的时候就在那里等待,当条件为假的时候执行下面的语句。

汇编中也有相似的指令,例如: DJNZ Rn ,$。

5. 单片机循环指令使用技巧

左循环本征函数:函数原型:unsigned char _crol_(unsigned char a,unsigned char n);单片机左移函数用法:例如,P2=0xff; P2=_crol_(P2,1)

;//语法是对的,但这是没意义的,因为执行程序后P2还是原值0xffP2=0xfe; P2=_crol_(P2,1)

;//执行程序后P2=0xfd扩展资料:单片机相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。单片机也被称为单片微控器,属于一种集成式电路芯片。在单片机中主要包含CPU、只读存储器ROM和随机存储器RAM等,多样化数据采集与控制系统能够让单片机完成各项复杂的运算,无论是对运算符号进行控制,还是对系统下达运算指令都能通过单片机完成。

6. 单片机main函数循环

首先51单片机编程大部分都是基于c语言进行编程的,也有基于汇编语言的。任何语言在开始执行的时候都会有一个入口主函数,一般main函数就担任这个角色。进入main函数以后就开始各种调度然后进行执行。

7. 单片机汇编语言循环程序

org 0mov r0,#100 ;共100个数mov a,#0 ;累加结果先清0mov r1,#1 ;第1个数为1loop:add a,r1 ;把数累加起来inc r1 ;下一个数djnz r0,loop;共100个数,未完转 LOOP循环sjmp $ ;完成end

8. 单片机循环函数有哪些

_cror_函数

单片机c语言中,在库函数内,为<intrins.h>格式为_cror_(x,y)含义是二进制数x右移动y位

_cror_ 字符循环右移

unsigned char _cror_(unsigned char val,unsigned char n);

举例:

如果二进制数为01010101 那么_crol_(1) 右移1位后将高位补低位。

结果10101010。

9. 单片机循环程序设计

/* 程序详细功能介绍:

*利用取表的方法,使端口P1做单一灯的变化:左移2次,右移2次,闪烁2次(延时的时间0.2秒)。

*在用表格进行程序设计的时候,要用以下的指令来完成

*(1).利用MOV DPTR,#DATA16的指令来使数据指针寄存器指到表的开头。

*(2).利用MOVC A,@A+DPTR的指令,根据累加器的值再加上DPTR的值,就可以使程序计数器PC指到表格内所要取出的数据。

*因此,只要把控制码建成一个表,而利用MOVC 工,@A+DPTR做取码的操作,

*就可方便地处理一些复杂的控制动作.

*/

#include

unsigned char code table[]={0xfe,0xfd,0xfb,0xf7,

0xef,0xdf,0xbf,0x7f,

0xfe,0xfd,0xfb,0xf7,

0xef,0xdf,0xbf,0x7f,

0x7f,0xbf,0xdf,0xef,

0xf7,0xfb,0xfd,0xfe,

0x7f,0xbf,0xdf,0xef,

0xf7,0xfb,0xfd,0xfe,

0x00,0xff,0x00,0xff,

0x01};

unsigned char i;

void delay(void)

{

unsigned char m,n,s;

for(m=20;m>0;m--)

for(n=20;n>0;n--)

for(s=248;s>0;s--);

}

void main(void)

{

while(1)

{

if(table[i]!=0x01)

{

P0=table[i];

i++;

delay();

}

else

{

i=0;

}

}

}

********************************************************************/

/* 实验目的:掌握单片机的查表原理,掌握MOV DPTR,#DATA16指令,MOVC A,@A+DPTR的运用

* 实验内容:利用MOVC A,@A+DPTR的指令,控制8个发光二极管的流水亮灭。

*/

/* 程序详细功能介绍:

*利用取表的方法,使端口P1做单一灯的变化:左移2次,右移2次,闪烁2次(延时的时间0.2秒)。

*在用表格进行程序设计的时候,要用以下的指令来完成

*(1).利用MOV DPTR,#DATA16的指令来使数据指针寄存器指到表的开头。

*(2).利用MOVC A,@A+DPTR的指令,根据累加器的值再加上DPTR的值,就可以使程序计数器PC指到表格内所要取出的数

据。

*因此,只要把控制码建成一个表,而利用MOVC A,@A+DPTR做取码的操作,

*就可方便地处理一些复杂的控制动作.

*/

ORG 0000H

LJMP START

ORG 0100H

START:

MOV DPTR,#TABLE ;取DPTR的地址,即表格的起始地址

LOOP:

CLR A ;对A清零

MOVC A,@A+DPTR ;查表

CJNE A,#01H,LOOP1 ;判断是否到了表格的结尾处,当A等于01时程序往下执行,否则跳到 LOOP1

LJMP START ;跳到程序的开头循环执行

LOOP1:

MOV P0,A ;把取得的表格数据送到P0

LCALL DELAY ;延时

INC DPTR ;DPTR加一,即把DPTR指向下一个表格单元

LJMP LOOP

DELAY: MOV R5,#10 ;延时子程序,改变R5,R6,R7 的值,可以改变延时的时间,从而改变流水灯移动速度

D1: MOV R6,#20

D2: MOV R7,#248

DJNZ R7,$

DJNZ R6,D2

DJNZ R5,D1

RET

;以下为流水灯的花样表格,每个数据对应一个时刻下的LED的状态

;TABLE的数据最后会被编译器安排到单片机的FLASH程序存储区里,CPU运行时只能读取,不能修改。

TABLE:

DB 0FEH,0FDH,0FBH,0F7H

DB 0EFH,0DFH,0BFH,07FH

DB 0FEH,0FDH,0FBH,0F7H

DB 0EFH,0DFH,0BFH,07FH

DB 07FH,0BFH,0DFH,0EFH

DB 0F7H,0FBH,0FDH,0FEH

DB 07FH,0BFH,0DFH,0EFH

DB 0F7H,0FBH,0FDH,0FEH

DB 00H, 0FFH,00H, 0FFH

DB 01H

END