单片机c语言loop用法(c语言loop指令)

关于单片机c语言loop用法(c语言loop指令)话题,今日,嗨壳技术分享网小编抽出大半天的时间整理一些单片机c语言loop用法(c语言loop指令)内容,让我们一起了解一些技术吧!

  本篇文章给大家谈谈单片机c语言loop用法,以及c语言loop指令对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

  本文目录一览:

  1、单片机DJNZ R7,LOOP是什么意思

2、51单片机汇编 CJNE A,30H,LOOP 这句是什么意思?

3、单片机c语言实例?

4、单片机c语言编程

5、单片机循环程序有哪几种基本结构

6、单片机lp和loop的区别

  单片机DJNZ R7,LOOP是什么意思

  DJNZ

  R7,LOOP

  意思是当R7减1不为0时转到LOOP标号处继续循环。

  51单片机汇编 CJNE A,30H,LOOP 这句是什么意思?

  CJNE A,30H,LOOP意思即为:

  A中的值是否等于30H中的值,如不相等即跳到LOOP标号所指程序位置,如果相等,程序执行下一行。这条指令一般表示为CJNE A,direct,rel;(a)≠(direct),则程序转移。

  direct代表为直接地址,rel代表相对偏移量,为8位带符号的补码。rel在实际的程序中一般用标号代替。

  扩展资料:

  使用方法:

  1.将仿真器插入需仿真的用户板的CPU插座中,仿真器由用户板供电;

  2.将仿真器的串行电缆和PC机接好,打开用户板电源;

  3.通过Keil C 的IDE 开发仿真环境UV2 下载用户程序进行仿真、调试。

  硬件说明

  1、使用用户板的晶振:仿真器晶振旁有两组跳线用来切换内部晶振和用户板晶振,当两个短路块位于仿真器晶振一侧时,默认使用仿真板上的晶振(11.0592MHz), 当两个短路块位于电容一侧时,使用用户板的晶振。

  2、为便于调试带看门狗的用户板,仿真器的复位端未与用户板复位端相连;故仿真器的复位按钮只复位仿真器,不复位用户板;若要复位用户板,请使用用户板复位按钮。

  单片机c语言实例?

  基于MCS-51系列单片机AT89S51的八路抢答器

  基于MCS-51系列单片机AT89S51的八路抢答器

  前言

  随着现代电子电路的快速发展,以及电子行业对现有电子工程技术的不断需求,特别是对实际操作实践的电子人才的需求越来越多,所以加强学生动手能力、重视实践应该是电子发展需求的必然趋向。实践动手能力的培养是一种综合能力,这种能力当然是在一定难度的前提下完成的,通过一定数量的实践才能逐步形成的。因此在培养实践能力的同时,要通过实践来不断的发现问题和解决问题的途径和方法,从而提高实践能力。

  近年来,随着单片机档次的不断提高,功能的不断完善,其应用日趋成熟、应用领域日趋扩大,特别是工业测控、尖端武器和日用家电等领域更是因为有了单片机而生辉增色。单片机应用技术已成为一项新的工程应用技术。本次实习设计的题目为基于单片机的抢答器。

  在本次的课程设计中我主要负责了该系统的印制电路板PCB的制作

  一、方案论证

  方案一:系统各部分采用中小规模集成数字电路,用机械开关按钮作为控制开关,完成抢答输入信号的触发。该方案的特点是中小规模集成电路应用技术成熟,性能可靠,能方便地完成选手抢答的基本功能,但是由于系统功能要求较高,所以电路连接集成电路相对较多,而且过于复杂,并且制作过程工序比较烦琐,使用不太方便。

  方案二:该系统采用MCS-51系列单片机AT89S51作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的实现。由于用了单片机,使其技术比较成熟,应用起来方便、简单并且单片机周围的辅助电路也比较少,便于控制和实现。整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩张和更改性。 CS-51单片机特点如下:

  1 可靠性好:单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般的CPU ,程序指令和数据都可以烧写在ROM许多信号通道都在同一芯片,因此可靠性高。

  2 易扩充:单片机有一般电脑所必须的器件,如三态双向总线,串并行的输入及输出引脚,可扩充为各种规模的微电脑系统

  3 控制功能强:单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳跃指令。原理框图如1-1所示;

  图1-1

  方案比较及其选用依据,显然方案二比方案一简单的多,不但从性能上优于方案一,而且在使用上及其功能的实现上都较方案一简洁,并且由于单片机具有优越的高集成电路性,使其工作速度更快、效率更高。另外AT89S51单片机采用12MHz的晶振,提高了信号的测量精度,并且使该系统可以通过软件改进来扩张功能。而方案一采用了中小规模集成电路,有其复杂的电路性能,从而可能会使信号的输入输出产生延时及不必要的误差。依此依据选择方案二比较适合。

  二、原理分析

  1. 本电路采用单片机AT89C51作为控制芯片,单片机的P0口外接八个发光二极管,每个发光二极管分别作为八位选手的信号指示灯。并在各个外接电路上并接开关按键,按键另一端接地。发光二极管采用共阳极接法,由于P0口为高电平呈输入状态,当有按键按下时,P0口呈低电平与按键对应的发光二极管满足点亮条件点亮。在程序编程上采用查询,查询P0口P0。0到P0。7的八个端口呈低电平,即查询是哪个选手先按键,然后将选手号码的字节数据送至串行口输出并在数码管上显现出来。

  2. 蜂鸣器是利用三极管处于开关状态是的导通与截止工作,在三极管导通时蜂鸣器工作,三极管截止时蜂鸣器不工作。三极管采用8550 PNP型基极接于P1。2口置其低电平时三极管导通,置其高电平时三极管截止。

  3. 数码管采用共阳极七段显示,其内部发光二极管为共阳极接高电平,当对应发光二极管一端为低电平时发光二极管点亮,显示的数字或字符由送入的字节数据控制,字节数据的输出采用串形口工作模式0,8位串行字节数据的输出通过RXD端口送出,TXD端用于送出同步移位脉冲,作为外接器件的同步移位信号。数据的发送是在TI=0的情况下,由一写发送缓冲器的指令开始CPU执行完该指令,串行口即将8位数据从RXD端送出,同时TXD端发出同步移位脉冲。8位数据发送完毕后由硬件置位TI=1,通过查询TI位来确定是否发送完一组数据,TI=1表示发送缓冲器已空,当要发送下一组数据时用软件使TI清零,然后即可发送下一组数据。

  4. 软件设计分析首先在程序的开始为选手设置了一段违规程序,该程序的作用是为了防止选手在主持人没有按下抢答键时,有的选手已经提前抢答了,本次抢答为无效抢答,并有报警和记录下该位选手的选号,做违规处理,如果选手超出了在规定的提前抢答次数,则该选手将被取消以后的抢答资格。如果在主持按下抢答键时再抢答,该次抢答被视为有效抢答,在主持按下回答问题的键时选手就可以在规定的时间内回答问题了

  图1-2

  1 选手查询程序:

  ORG 0000H

  START:CLR A

  MOV A,#0FFH

  MOV P0,A

  LOP:JNB P2。4,LP

  JNB P0。0,SA1

  JNB P0。1,SA2

  JNB P0。2,SA3

  JNB P0。3,SA4

  JNB P0。4,SA5

  JNB P0。5,SA6

  JNB P0。6,SA7

  JNB P0。7,SA8

  SJMP LOP

  SA1:AJMP SB1

  SA2:AJMP SB2

  SA3:AJMP SB3

  SA4:AJMP SB4

  SA5:AJMP SB5

  SA6:AJMP SB6

  SA7:AJMP SB7

  SA8:AJMP SB8

  LP:MOV R0,#9

  LOP1:LCALL LED

  LCALL DEL

  JNB P0。0,SIP1

  JNB P0。1,SIP2

  JNB P0。2,SIP3

  JNB P0。3,SIP4

  JNB P0。4,SIP5

  JNB P0。5,SIP6

  JNB P0。6,SIP7

  JNB P0。7,SIP8

  DEC R0

  CJNE R0,#0,LOP1

  MOV R0,#0

  LCALL LED

  LCALL DEL

  SJMP LOP

  SIP1:AJMP DIP1

  SIP2:AJMP DIP2

  SIP3:AJMP DIP3

  SIP4:AJMP DIP4

  SIP5:AJMP DIP5

  SIP6:AJMP DIP6

  SIP7:AJMP DIP7

  SIP8:AJMP DIP8

  SB1:MOV R2,#1

  LCALL LED1

  LCALL DE

  SJMP LP1

  SB2:MOV R2,#2

  LCALL LED1

  LCALL DE

  SJMP LP1

  SB3:MOV R2,#3

  LCALL LED1

  LCALL DE

  SJMP LP1

  SB4:MOV R2,#4

  LCALL LED1

  LCALL DE

  SJMP LP1

  SB5:MOV R2,#5

  LCALL LED1

  LCALL DE

  SJMP LP1

  SB6:MOV R2,#6

  LCALL LED1

  LCALL DE

  SJMP LP1

  SB7:MOV R2,#7

  LCALL LED1

  LCALL DE

  SJMP LP1

  SB8:MOV R2,#8

  LCALL LED1

  LCALL DE

  SJMP LP1

  LP1:JNB P2。4,LOP2

  SJMP LP1

  DIP1:MOV R2,#1

  LCALL LED1

  LCALL DE

  SJMP LH1

  DIP2:MOV R2,#2

  LCALL LED1

  LCALL DE

  SJMP LH1

  DIP3:MOV R2,#3

  LCALL LED1

  LCALL DE

  SJMP LH1

  DIP4:MOV R2,#4

  LCALL LED1

  LCALL DE

  SJMP LH1

  DIP5:MOV R2,#5

  LCALL LED1

  LCALL DE

  SJMP LH1

  DIP6:MOV R2,#6

  LCALL LED1

  LCALL DE

  SJMP LH1

  DIP7:MOV R2,#7

  LCALL LED1

  LCALL DE

  SJMP LH1

  DIP8:MOV R2,#8

  LCALL LED1

  LCALL DE

  SJMP LH1

  LH1:JNB P2。4,LOOP

  SJMP LH1

  LOP2:MOV A,#11H

  MOV SBUF,A

  JNB TI,$

  CLR TI

  LCALL DEL

  AJMP LOP

  2 串行输出程序:

  该部分程序的设计利用了单片机的串行模式0输出,该输出方式占用IO口少。可以省去许多IO口作为功能的扩展使用。在该模式下,我们采用了输出查询的方式,就是要借助发送标志TI,当程序执行到发送标志位时,查询其标志位TI的值,只要TI的值是0程序就继续查询,知道查询到TI为1时才结束,然后在进入下一组数据的发送。由于串行输出时送进去的数都是十进制数,以致计算机不能识别,所以还要把送进去的十进制数转化成而进制数,这样才能输出。因此在输出程序前必须有拆字程序,把原来送进去的十进制数转化成二进制数,然后在输出并通过数码管显示出来。但是如果在显示选手选号与显示选手回答问题所用的到计同用一段串行输出程序时就会造成程序的混乱,所以在此处设计了两段初始值不同的显示程序,从而可能增加了程序的烦琐化。

  LED1:MOV A,R2

  MOV B,#10

  DIV AB

  MOV R1,A

  MOV R3,B

  MOV A,R1

  MOV DPTR,#TAB

  MOVC A,@A+DPTR

  MOV SBUF,A

  JNB TI,$

  CLR TI

  MOV A,R3

  MOVC A,@A+DPTR

  MOV SBUF,A

  JNB TI,$

  CLR TI

  RET。

  LED:MOV A,R0

  MOV B,#10

  DIV AB

  MOV R1,A

  MOV R3,B

  MOV A,R1

  MOV DPTR,#TAB

  MOVC A,@A+DPTR

  MOV SBUF,A

  JNB TI,$

  CLR TI

  MOV A,R3

  MOVC A,@A+DPTR

  MOV SBUF,A

  JNB TI,$

  CLR TI

  RET

  DE:CLR P1。2

  LCALL DEL01

  SETB P1。2

  LCALL DEL01

  RET

  TAB:DB 11H,0D7H,32H,92H,0D4H,98H,18H,0D3H,10H,90H

  RET

  END

  3倒计时程序

  该程序为选手回答问题时的30秒倒计时程序,其中前25秒为正常的倒计时,在后5秒倒计时时伴随有报警声,用于提示选手回答问题的剩余时间。如果该选手在正常的倒计时内没有完成问题的回答,那么倒计时将被清零。

  LOOP:MOV R0,#30

  LPP:LCALL LED

  LCALL DEL

  JNB P2。4,LOP2

  DEC R0

  CJNE R0,#5,LPP

  MOV R0,#5

  LPP1:JNB P2。4,LOP2

  LCALL LED

  LCALL DE

  DEC R0

  CJNE R0,#0,LPP1

  MOV R0,#0

  LCALL LED

  LCALL DEL

  LJMP START

  4延时程序

  该系统设计了两段延时程序,一段1秒延时,是为了30秒倒计时调用和程序中一秒延时所用;另一段为0。5秒延时,用于报警。程序的设计中报警时间为一秒,但是由于在硬件的设计时只设计了一个按键,这样就会造成连续按键时会使所设定的报警声不断的响,这是设计中不允许的,所以在软件编程时设计了一个0。5秒的延时,被报警时所调用,这样就使报警声能很清楚地区分出来了

  DEL:MOV R6,#20 DEL01:MOV R6,#10

  DEL1:MOV R5,#100 DEL11:MOV R5,#100

  DEL2:MOV R4,#250 DEL21:MOV R4,#250

  DJNZ R4,$ DJNZ R4,$

  DJNZ R5,DEL2 DJNZ R5,DEL21

  DJNZ R6,DEL1 DJNZ R6,DEL11

  RET RET

  5报警程序

  该段程序主要是用于本系统中的所有报警使用,报警时间延时为1秒钟。

  DE:CLR P1。2

  LCALL DEL01

  SETB P1。2

  LCALL DEL01

  RET

  三、制作过程

  五、参考文献

  曾峰,巩海洪,曾波,电子工业出版社,印刷电路板(PCB)设计与制作 2005.8

  梅海凤,王艳秋,张军,汪毓铎,清华大学出版社 单片机原理与接口技术 2004.2

  北京交通大学出版社

  第二个文献:基于51单片机八路抢答器设计程序及电路图

  基于51单片机八路抢答器设计程序及电路图

  说明:本人的这个设计改进后解决了前一个版本中1号抢答优先的问题,并增加了锦囊的设置,当参赛选手在回答问题时要求使用锦囊,则主持人按下抢答开始键,计时重新开始。

  ;八路抢答器电路请看下图是用ps仿真的,已经测试成功

  单片机八路抢答器电路图

  ;============================================================

  ;================单片机八路抢答器程序 =====================

  ;================ 51hei =======================

  ;================ 2008 年 5月 =======================

  ;============================================================

  OK EQU 20H;抢答开始标志位

  RING EQU 22H;响铃标志位

  ORG 0000H

  AJMP MAIN

  ORG 0003H

  AJMP INT0SUB

  ORG 000BH

  AJMP T0INT

  ORG 0013H

  AJMP INT1SUB

  ORG 001BH

  AJMP T1INT

  ORG 0040H

  MAIN: MOV R1,#30;初设抢答时间为30s

  MOV R2,#60;初设答题时间为60s

  MOV TMOD,#11H;设置未定时器/模式1

  MOV TH0,#0F0H

  MOV TL0,#0FFH;越高发声频率越高,越尖

  MOV TH1,#3CH

  MOV TL1,#0B0H;50ms为一次溢出中断

  SETB EA

  SETB ET0

  SETB ET1

  SETB EX0

  SETB EX1;允许四个中断,T0/T1/INT0/INT1

  CLR OK

  CLR RING

  SETB TR1

  SETB TR0;一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了

  ;=====查询程序=====

  START: MOV R5,#0BH

  MOV R4,#0BH

  MOV R3,#0BH

  ACALL DISPLAY;未开始抢答时候显示FFF

  JB P3.0,NEXT;ddddddd

  ACALL DELAY

  JB P3.0,NEXT;去抖动,如果”开始键”按下就向下执行,否者跳到非法抢答查询

  ACALL BARK;按键发声

  MOV A,R1

  MOV R6,A;送R1-R6,因为R1中保存了抢答时间

  SETB OK;抢答标志位,用于COUNT只程序中判断是否查询抢答

  MOV R7,#01H ;读抢答键数据信号标志,这里表示只读一次有用信号

  MOV R3,#0AH;抢答只显示计时,灭号数

  AJMP COUNT;进入倒计时程序,”查询有效抢答的程序”在COUNT里面

  NEXT: JNB P1.0,FALSE1

  JNB P1.1,FALSE2

  JNB P1.2,FALSE3

  JNB P1.3,FALSE4

  JNB P1.4,FALSE5

  JNB P1.5,FALSE6

  JNB P1.6,FALSE7

  JNB P1.7,FALSE8

  AJMP START

  ;=====非法抢答处理程序=====

  FALSE1: MOV R3,#01H

  AJMP ERROR

  FALSE2: MOV R3,#02H

  AJMP ERROR

  FALSE3: MOV R3,#03H

  AJMP ERROR

  FALSE4: MOV R3,#04H

  AJMP ERROR

  FALSE5: MOV R3,#05H

  AJMP ERROR

  FALSE6: MOV R3,#06H

  AJMP ERROR

  FALSE7: MOV R3,#07H

  AJMP ERROR

  FALSE8: MOV R3,#08H

  AJMP ERROR

  ;=====INT0(抢答时间R1调整程序)=====

  INT0SUB:MOV A,R1

  MOV B,#0AH

  DIV AB

  MOV R5,A

  MOV R4,B

  MOV R3,#0AH

  ACALL DISPLAY;先在两个时间LED上显示R1

  JNB P3.4,INC0;P3.4为+1s键,如按下跳到INCO

  JNB P3.5,DEC0;P3.5为-1s键,如按下跳到DECO

  JNB P3.1,BACK0;P3.1为确定键,如按下跳到BACKO

  AJMP INT0SUB

  INC0: MOV A,R1

  CJNE A,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起。

  MOV R1,#00H

  ACALL DELAY1

  AJMP INT0SUB

  ADD0: INC R1

  ACALL DELAY1

  AJMP INT0SUB

  DEC0: MOV A,R1

  JZ SETR1;如果R1为0, R1就置99,

  DEC R1

  ACALL DELAY1

  AJMP INT0SUB

  SETR1: MOV R1,#63H

  ACALL DELAY1

  AJMP INT0SUB

  BACK0: RETI

  ;=====INT1(回答时间R2调整程序)=====

  INT1SUB:MOV A,R2

  MOV B,#0AH

  DIV AB

  MOV R5,A

  MOV R4,B

  MOV R3,#0AH

  ACALL DISPLAY

  JNB P3.4,INC1

  JNB P3.5,DEC1

  JNB P3.1,BACK1

  AJMP INT1SUB

  INC1: MOV A,R2

  CJNE A,#63H,ADD1

  MOV R2,#00H

  ACALL DELAY1

  AJMP INT1SUB

  ADD1: INC R2

  ACALL DELAY1

  AJMP INT1SUB

  DEC1: MOV A,R2

  JZ SETR2

  DEC R2

  ACALL DELAY1

  AJMP INT1SUB

  SETR2: MOV R2,#63H

  ACALL DELAY1

  AJMP INT1SUB

  BACK1: RETI

  ;=====倒计时程序(抢答倒计时和回答倒计时都跳到改程序)=====

  REPEAT:MOV A,R2 ;使用锦囊时重新计时

  MOV R6,A

  CLR RING

  COUNT: MOV R0,#00H;重置定时器中断次数

  MOV TH1,#3CH

  MOV TL1,#0B0H;重置定时器

  RECOUNT:MOV A,R6;R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6

  MOV B,#0AH

  DIV AB;除十分出个位/十位

  MOV 30H,A;十位存于(30H)

  MOV 31H,B;个位存于(31H)

  MOV R5,30H;取十位

  MOV R4,31H;取个位

  MOV A,R6

  SUBB A,#07H

  JNC LARGER;大于5s跳到LARGER,小于等于5s会提醒

  MOV A,R0

  CJNE A,#0AH,FULL;1s中0.5s向下运行

  CLR RING

  AJMP CHECK

  FULL: CJNE A,#14H,CHECK;下面是1s的情况,响并显示号数并清R0,重新计

  SETB RING

  MOV A,R6

  JZ QUIT;计时完毕

  MOV R0,#00H

  DEC R6;一秒标志减1

  AJMP CHECK

  LARGER: MOV A,R0

  CJNE A,#14H,CHECK;如果1s向下运行,否者跳到查”停/显示”

  DEC R6;计时一秒R6自动减1

  MOV R0,#00H

  CHECK: JNB P3.1,QUIT;如按下停止键退出

  JNB OK,CHECKK ;只在回答倒计时才有效

  AJMP NEXTT

  CHECKK:JNB P3.0,REPEAT ;判断是否使用锦囊

  NEXTT: ACALL DISPLAY

  JB OK,ACCOUT;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用)

  AJMP RECOUNT

  ACCOUT:

  MOV A,36H

  JNB ACC.0,TRUE1

  JNB ACC.1,TRUE2

  JNB ACC.2,TRUE3

  JNB ACC.3,TRUE4

  JNB ACC.4,TRUE5

  JNB ACC.5,TRUE6

  JNB ACC.6,TZ1

  JNB ACC.7,TZ2

  AJMP RECOUNT

  TZ1:JMP TRUE7

  TZ2:JMP TRUE8

  QUIT: CLR OK;如果按下了”停止键”执行的程序

  CLR RING

  AJMP START

  ;=====正常抢答处理程序=====

  TRUE1: ACALL BARK

  MOV A,R2

  MOV R6,A;抢答时间R2送R6

  MOV R3,#01H

  CLR OK;因为答题的计时不再查询抢答,所以就锁了抢答

  AJMP COUNT

  TRUE2:ACALL BARK

  MOV A,R2

  MOV R6,A

  MOV R3,#02H

  CLR OK

  AJMP COUNT

  TRUE3:ACALL BARK

  MOV A,R2

  MOV R6,A

  MOV R3,#03H

  CLR OK

  AJMP COUNT

  TRUE4:ACALL BARK

  MOV A,R2

  MOV R6,A

  MOV R3,#04H

  CLR OK

  AJMP COUNT

  TRUE5:ACALL BARK

  MOV A,R2

  MOV R6,A

  MOV R3,#05H

  CLR OK

  AJMP COUNT

  TRUE6: ACALL BARK

  MOV A,R2

  MOV R6,A

  MOV R3,#06H

  CLR OK

  AJMP COUNT

  TRUE7:ACALL BARK

  MOV A,R2

  MOV R6,A

  MOV R3,#07H

  CLR OK

  AJMP COUNT

  TRUE8:ACALL BARK

  MOV A,R2

  MOV R6,A

  MOV R3,#08H

  CLR OK

  AJMP COUNT

  ;=====犯规抢答程序=====

  ERROR: MOV R0,#00H

  MOV TH1,#3CH

  MOV TL1,#0B0H

  MOV 34H,R3;犯规号数暂存与(34H)

  HERE: MOV A,R0

  CJNE A,#06H,FLASH;0.3s向下运行-灭并停响

  CLR RING

  MOV R3,#0AH

  MOV R4,#0AH

  MOV R5,#0AH;三灯全灭

  AJMP CHECK1

  FLASH: CJNE A,#0CH,CHECK1;下面是0.8s的情况,响并显示号数并清R0,重新计

  SETB RING

  MOV R0,#00H

  MOV R3,34H;取回号数

  MOV R5,#0BH

  MOV R4,#0BH;显示FF和号数

  AJMP CHECK1

  CHECK1: JNB P3.1,QUIT1

  ACALL DISPLAY

  AJMP HERE

  QUIT1: CLR RING

  CLR OK

  AJMP START

  ;=====显示程序=====

  DISPLAY:MOV DPTR,#DAT1;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出,

  MOV A,R3

  MOVC A,@A+DPTR

  MOV P2,#0feH

  MOV P0,A

  ACALL DELAY2

  MOV DPTR,#DAT2

  MOV A,R5

  MOVC A,@A+DPTR

  MOV P2,#0fdH

  MOV P0,A

  ACALL DELAY2

  MOV A,R4

  MOVC A,@A+DPTR

  MOV P2,#0fbH

  MOV P0,A

  ACALL DELAY2

  RET

  DAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H

  ;”灭”,”1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”9″,”灭”,”F”

  DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H

  ;第一个为零,其他与上相同,因为十位如果为零显示熄灭

  ;====加减时间延时(起到不会按下就加N个数)======

  DELAY1: MOV 35H,#08H

  LOOP0: ACALL DISPLAY

  DJNZ 35H,LOOP0

  RET

  ;=====延时4236个机器周期(去抖动用到)=====

  DELAY: MOV 32H,#12H

  LOOP: MOV 33H,#0AFH

  LOOP1: DJNZ 33H,LOOP1

  DJNZ 32H,LOOP

  RET

  ;=====延时4236个机器周期(显示用到)=====

  DELAY2: MOV 32H,#43H

  LOOP3: MOV 33H,#1EH

  MOV A,R7 ;每隔60~70个机器周期读一次P1口,全为1时为无效数据,继续读,有一个不为1时,转到正常抢答处理

  JNZ AAAA1 ;没读到有效数据时继续转到AAAA1

  LOOP2: DJNZ 33H,LOOP2

  DJNZ 32H,LOOP3

  RET

  ;=====读抢答按键数据口程序=====

  ;由于在读抢答数据口的时候,单片机首先进入倒计时程序,再调用显示程序,最后才检测按键口

  ;然而在检测按键口时动态扫描要调用三次(4ms)延时程序.这样就会导致读数据口出现滞后,造成1号优先最高.8号最低.

  ;故采用在延时子程序中加了读数据口程序.保证了灵敏度和可靠性

  AAAA1: MOV A,P1

  CJNE A,#0FFH,AA1 ;当不全为1时的数据为有效数据

  AA0: MOV 36H,A ;将有效数据送到36H暂存

  AJMP LOOP2

  AA1: DEC R7

  AJMP AA0

  ;=====发声程序=====

  BARK: SETB RING

  ACALL DELAY1

  ACALL DELAY1

  CLR RING;按键发声

  RET

  ;=====TO溢出中断(响铃程序)=====

  T0INT: MOV TH0,#0ECH

  MOV TL0,#0FFH

  JNB RING,OUT;

  CPL P3.6;RING标志位为1时候P3.6口不短取反使喇叭发出一定频率的声音

  OUT: RETI

  ;=====T1溢出中断(计时程序)=====

  T1INT: MOV TH1,#3CH

  MOV TL1,#0B0H

  INC R0

  RETI

  END

  仅供参考。

  单片机c语言编程

  ;做个汇编的吧,C的你自己搞搞,呵呵。

  ORG 0000H

  LJMP MAIN

  ORG 0030H

  MAIN:

  MOV SP,#6FH

  MOV TMOD,#20H

  MOV SCON,#0D0H

  MOV TH0,#0F4H

  MOV TL0,#0F4H

  SETB TR1

  MOV R0,#50H

  MOV R2,#16

  LOOP:

  JNB RI,$

  CLR RI

  MOV A,SBUF

  MOV C,P

  JC LOOP1

  ORL C,RB8

  JC ERR

  SJMP LOOP2

  LOOP1:

  ANL C,RB8

  JNC ERR

  LOOP2:

  MOV @R0,A

  MOV A,@R0

  MOV TB8,P ;第九位数

  MOV SBUF,A ;发送出去

  JNB TI,$

  CLR TI

  INC R0

  DJNZ R2,LOOP

  ERR:

  SJMP LOOP

  END

  单片机循环程序有哪几种基本结构

  如果是C语言的话,那么单片机C51循环和普通C语言一样。如果是汇编的话,那么列举如下:

  1、DJNZ指令,常见延时程序。

  DELAY:

  MOV R2,#250

  DJNZ R2,$

  RET

  2、CJNE指令,常见处理数据块。

  MOV DPTR,#1000H

  MOV R0,#30H

  LOOP:

  CLR A

  MOVX A,@DPTR

  MOV @R0,A

  INC DPTR

  INC R0

  CJNE R0,#50H,LOOP

单片机c语言loop用法(c语言loop指令)

  RET

  3、直接跳转,用LJMP或SJMP,常见主循环

  MAIN:

  JB P1.0,MAIN1

  CLR P0.0

  SJMP MAIN

  MAIN1:

  JB P1.1,MAIN2

  CLR P0.1

  SJMP MAIN

  MIAN2:

  JB P1.2,MAIN

  SETB P0.0

  SETB P0.1

  SJMP MAIN

  END

  还有其他表现形式,但类型都是脱离于这三种形态。

  单片机lp和loop的区别

  这两个都不是单片机引脚,也不是寄存器。汇编语言写程序时,部分人习惯用loop表示循环程序的标号,至于lp也是一标号。用C语言写程序,这两个就是变量名了。所以,这两个是写程序时,是随便用的,没有什么特别意义,也就无所谓什么区别了!

  单片机c语言loop用法的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言loop指令、单片机c语言loop用法的信息别忘了在本站进行查找喔。

以上是嗨壳技术分享网(www.heikehao.com)小编对“ 单片机c语言loop用法(c语言loop指令) ”的详细解答,希望能够帮助到大家。

原创文章,作者:语言我知,如若转载,请注明出处:https://www.heikehao.com/640.html

(0)
语言我知语言我知
上一篇 2020年1月3日
下一篇 2020年1月3日

相关推荐

  • 图c语言实现

    图c语言实现   C语言如何画图   framebuffer(帧缓冲)。   帧的最低数量为24(人肉眼可见)(低于24则感觉到画面不流畅)。   显卡与帧的关系:由cpu调节其数…

    2021年1月31日
  • 什么是c语言单精度和双精度

    今日,嗨壳技术分享网小编分享什么是c语言单精度和双精度 相关内容,内容如下。   c语言数据类型中“双精度”“单精度”是什么意思?   单精度和双精度都指浮点数,就是带小数点的数 …

    2020年9月17日
  • 矩阵求逆c语言程序

    关于矩阵求逆c语言程序话题,今日,嗨壳技术分享网小编抽出大半天的时间整理一些矩阵求逆c语言程序内容,让我们一起了解一些技术吧!   C语言 求矩阵的逆   //源程序如下#incl…

    2020年2月12日
  • c语言时间片优先算法

    关于c语言时间片优先算法话题,今日,嗨壳技术分享网小编抽出大半天的时间整理一些c语言时间片优先算法内容,让我们一起了解一些技术吧!   C语言编程实现时间片轮转算法,尽量写得简单易…

    2020年9月1日
  • 怎么用c语言编程打印图形,怎么用c语言编程打印图形图片

    今天,嗨壳技术分享网给大家整理一些怎么用c语言编程打印图形,怎么用c语言编程打印图形图片内容。   C语言编程问题,如何用for循环打印这个图形???谢谢了!   1、可以使用两个…

    2020年6月26日
  • 递归遍历树c语言,递归算法c语言实例

    今日,嗨壳技术分享网小编分享递归遍历树c语言,递归算法c语言实例 相关内容,内容如下。   求C语言版数据结构二叉树的先序遍历递归算法,不要伪码,要求能实现能运…   …

    2020年1月25日
  • c语言用什么编程软件

    C是世界上最广泛使用的编程语言之一。C语言用于开发系统软件、嵌入式系统甚至游戏引擎。C语言是一种多才多艺的语言,需要一个好的IDE来充分发挥它的作用。集成开发环境(IDE)通过提供…

    2023年12月18日 C语言
  • 带通滤波器c语言,带通滤波器系统函数

    带通滤波器c语言,带通滤波器系统函数   我做“基于FFT算法与实现”和“FIR滤波器的设计与实现”的实验…   一般而言,FFT算法可以分为时间抽取(DIT)FFT和…

    2023年10月26日
  • c语言long怎么输出

    最后,如果你想学C/C++可以私信小编“01”获取素材资料以及开发工具和听课权限哦! C语言的基本输入与输出函数 1.1.1 格式化输入输出函数 Turbo C2.0 标准库提供了…

    C语言 2023年12月18日
  • linuxc语言fopen函数

    今日,嗨壳技术分享网小编分享linuxc语言fopen函数 相关内容,内容如下。   C语言fopen函数和其参数   1、如果你输入notepad.exe a.txt,则参数个数…

    2021年11月4日

网上怎么找黑客帮忙多少钱

怎么网上找到的黑客?黑客的收费标准是什么呢?找黑客一般费用是多少?


找黑客帮忙一般要多少钱

黑客服务的价格范围很广,主要取决于服务的类型和难度。根据提供的信息如下:


1.攻击服务:


攻击范围:这包括了通过扫描入侵、种植木马等方式对他人计算机实施非法控制,并利用被控制的计算机对网站、App等服务器发起攻击


。1

2.特定账户的售价:


账户信息:如垂钓者、而勒索软件,显示市场对特定黑客工具的需求和价格波动。

3.攻击工具:

“RIG”攻击工具包的租用费用,提供了不同时长的选择。

4.远程访问木马(RAT)的价格:

相比去年有所下降,显示出市场价格的波动。

5.DDOS攻击的报价:

DDOS攻击服务按不同时长定价选择。

黑客服务的价格因服务类型、难度、以及市场需求的不同而有很大的差异。这些价格反映了黑客服务市场的复杂性和多样性,同时也提醒人们网络安全的重要性。