文档库 最新最全的文档下载
当前位置:文档库 › 单片机程序分析题练习

单片机程序分析题练习

单片机程序分析题练习
单片机程序分析题练习

1.程序如下:

MOV SP,#13H

MOV 33H,#7FH

MOV 44H,#0ABH

PUSH 33H

PUSH 44H

POP 33H

POP 44H

程序执行后,(33H)=0ABh ,(44H)=7Fh

2.下列各条指令其源操作数的寻址方式是什么各条指令单独执行后,A中的结果是什么设(60H)=35H,(A)=19H,(R0)=30H,(30H)=0FH。

(1)MOV A,#48H ;寻址方式:

(A)= 48H

(2)ADD A,60H ;寻址方式:

(A)= 4DH

(3)ANL A,@R0 ;寻址方式:

(A)= 10H

3.阅读下列程序段,写出每条指令执行后的结果,并说明此程序段完成什么功能

MOV R1,#30H ;(R1)=30H

MOV A,#64H ;(A)= 64H

ADD A,#47H ;(A)=ABH ,(CY)= 0 ,

(AC)= 0

DA A ;(A)=31H ,(CY)=1 ,

(AC)=

MOV @R1,A ;(R1)= 30H ,(30H)= 31H

此程序段完成的功能

4.设(A)=38H,R0=28H,(28H)=18H,执行下列程序后,(A)=0

ORL A,#27H

ANL A,28H

XCHD A,@R0

CPL A

5.设(A)=38H,(20H)=49H,PSW=00H,(B)=02H,填写以下中间结果。

SETB C

ADDC A, 20H (A)= 82H (CY)= 0 (AC)= 1

RLC A (A)=04H (CY)=1 (P)= 1

MUL AB (A)=08H (B)=00H (OV)=0

6.已知(R0)=20H, (20H ) =10H, (P0) =30H, (R2) =20H, 执行如下程序段后( 40H ) =15H MOV @R0 , #11H (20H)=11H

MOV A , R2 A=20H

ADD A , 20H A=40H

MOV PSW , #80H

SUBB A , P0 A=10H

XRL A , #45H A=15H

MOV 40H , A (40H)=15H

7. 已知 ( R0 )=20H, (20H )=36H, (21H) =17H, (36H) =34H, 执行过程如下: MOV A , @R0 A=36H

MOV R0 , A R0=36H

MOV A , @R0 A=34H

ADD A , 21H A=4BH

ORL A , #21H A=21H

RL A A=42H

MOV R2 , A R2=42H

RET

则执行结束(R0)=36H (R2)= 42H

8.设在31H单元存有#23H,执行下面程序:

MOV A, 31H A=23H

ANL A, #0FH A=03H

MOV 41H, A (41H)=03H

MOV A, 31H A=23H

ANL A, #0F0H A=20H

SWAP A A=02H

MOV 42H, A (42H)=02H

则(41H)= 03H (42H)= 02H

9.(R0)=4BH,(A)=84H,片内RAM(4BH)=7FH,(40)=20H

MOV A,@R0 A=7FH

MOV @R0,40H (4BH)=20H

MOV 40H,A (40H)=7FH;

MOV R0,#35H R0=35H

问执行程序后,R0=35H A= 7FH 4BH= 20H 40H= 7FH

10.若PSW=00, 执行下列程序后,PSW的CY,AC,OV,P各位状态如何

MOV A,#0FBH A=FBH

MOV PSW,#10H

ADD A,#7FH A=7AH CY=1; AC=1;OV=1; P=1;

MOVA,20H A=O1H

INCA A=02H

MOVDPTR,#2000H DPRT=2000H

MOVCA,@A+DPTR A=5BH

CPLAA=A3H

MOV 30H,A (30H) =A3H

SJMP $

END

执行程序后,(30H)= A3H

12.分析程序段:

CLRC清零cy指令

MOVA,#91H给A立即数

SUBBA,61H;A寄存器与地址(61h)的值相减

ADDA,61H;A寄存器与地址(61h)的值相加

DAA;BDC码调整指令

MOV62H,A把累加器A的值送给地址寄存器62h

(1)程序执行何种操作对91H做BDC码调整;

(2)若已知初值:(60H)=24H,(61H)=72H,则运行后,(62H)= 91H 。

13.设(R0)=7EH,DPTR=10FEH,片内RAM7EH和7FH两单元的内容分别是FFH和38H,请写出下列程序段的每条指令的执行结果。

INC @R0(7E)=00H

INCR0R0=7FH

INC @R0(7FH)=39H

INCDPTRDPTR=10FFH

INCDPTRDPTR=1100H

INCDPTRDPTR=1101H

14.设R0=20H,R1=25H,(20H)=80H,(21H)=90H,(22H)=A0H,(25H)=A0H,

(26H)=6 FH,(27H)=76H,下列程序执行程序后,结果如何

CLR C C=0;

MOV R2,#3 R2=3;

LOOP: MOV A,@R0 A=80H A=90H

ADDC A,@R1 A=20H

MOV @R0,A (20H)=20H;(21H)=00H; (22H)=16H

INC R0 R0=21H;

INC R1 R1=26H

DJNZ R2,LOOP

JNC NEXT1

MOV @R0,#01H (23H)=01H

SJMP $

NEXT: DEC R0

SJMP $

(20H)=20H 、(21H)= 00H 、(22H)=16H 、(23H)= 01H 、 CY=1

A=16H 、R0=23H 、R1=27H 。

15.MOV DPTR,#2000H (DPTR)= 2000H

MOV A,#80H (A)= 80H

MOVX @DPTR,A (2000H)= 80H

INC DPTR (DPTR)= 2001

MOV A,#90H (A)= 90H

MOVX @DPTR,A (2001H)= 90H

MOV DPTR,#2000H (DPTR)= 2000H

MOVX A,@DPTR (A)= 80H

MOV B,A (B)=80H

INC DPTR (DPTR)= 2001H

MOVX A,@DPTR (A)= 90H

16.若(10H)=0FFH,(11H)=00H,(12H)=0FFH,(13H)=00H,写出每一步指令运行结果MOV A,10H (A)= FFH ,

ANL A,#01H (A)= 01H ,

MOV A,11H (A)= 00H ,

ORL A,#01H (A)= 01H ,

MOV A,12H (A)= FFH ,

XRL A,#01H (A)= FEH ,

MOV A,13H (A)= 00H ,

XRL A,#0AA (A)= AAH ,

(10H)= FFH , (11H)= 00H , (12H)= FFH , (13H)= 00H

17. 阅读程序并回答下列问题:

X DATA 50H

Y DATA 51H

ORG 00H

JMP START

ORG 100H

START: MOV SP,#60H

MOV X,#10 (50H)=10

MOV Y,#10 (51H)=10

LCALL SUB

SUB: NOP

INC X (50H)=11 X+10=20

DEC Y (51H)=9 Y=0;

MOV A,Y A=9

JZ SUBRET

LCALL SUB

SUBRET: NOP

RET

计算X和Y的值是多少

(X)= 20 ;(Y)= 0 ;

18. 设自变量为X,存放在ARE单元,应变量Y存放在BUF单元。给程序标注注释,说明该段子程序的功能并写出该程序的函数关系式。(7分)

START:MOV DPTR,#ARE

MOVX A,@DPTR

JZ SUL

JB ,NEG ;注释:如果A的值大于128跳转NEG

MOV A,#02H

SUL:MOV DPTR,#BUF

MOVX @DPTR,A ;注释:把A的值传送给BUF地址中

RET

NEG:MOV A,#0FEH

SJMP SUL

如果X=0,Y=0;

如果X<128,Y=02h;

如果X>128,Y=FEH;

19. 执行下列程序段后,(P1)=_9AH__。

MOV P1,#5DH

CPL

CPL

CLR

SETB

20. 执行下列程序段后,(A)=___8BH____,(C Y)=__0_。

MOV A,#C5H

RL A

21. 下列程序段执行后,(R0)=___7EH____,(7EH)=__41H__,(7FH)=___01H____。

MOV R0,#7EH R0=7EH

MOV 7EH,#0FFH (7EH)=FFH

MOV 7FH,#40H (7EH)=40H

1NC @R0 (7EH)=41H

1NC R0 R0=7FH;

1NC @R0 (7FH)=1;

22. 已知(SP)=60H,子程序SUBTRN的首地址为0345H,现执行位于0123H的ACALL SUBTRN

双字节指令后,(PC)=___,(61H)=_______,(62H)= ____。

23. 阅读下列程序,说明其功能。

MOV R0,#data

MOV A,@R0

RL A

MOV R1,A

RL A

RL A

ADD A,R1

MOV @R0,A

RET

24. 程序填空

1)数据块传送,将RAM从30H开始的连续32个单元的内容传递给片内RAM从60H开始的连续32个单元。

ORG 1000H

MOV R7,_____

MOV R0, #30H

MOV R1,#60H

LOOP:MOV A,@R0

MOV _____,A

INC R0

INC R1

DJNZ R7, _____

SJMP $

END

2) RAM中40H单元内存有一个十六进制数,把这个数转换为BCD码的十进制数,BCD码的十位和个位放在累加器A中,百位放在R2中。

ORG 2200H

MOV A,_____

MOV B,#64H

DIV AB

MOV R2,A

MOV A,_____

XCH A,B

DIV AB

SWAP _____

ORL A,B

SJMP $

END

3)编程序将片内40H-46H单元内容的高4位清零,保持低4位不变。

ORG 1000H

MOV R7,#07H

MOV R0,_____

LOOP:MOV A,@R0

ANL A,_____

MOV @R0,A

INC R0

DJNZ R7,LOOP

SJMP $

END

25. 程序如下

2506H M5: MOV SP,#58H;

2509HMOV 10H,#0FH;

250CH MOV 11H,#0BH;

250FH ACALL XHD;

2511H MOV 20H,11H

2514H M5A: SJMP M5A

XHD: PUSH 10H

PUSH 11H

POP 10H

POP 11H

RET

问:(1)执行POP 10H后堆栈内容

(2)执行M5A: SJMP M5A后,( SP )= ( 20H )=

26. 解读下列程序,然后填写有关寄存器内容

(1) MOV R1,#48H

MOV 48H,#51H

CJNE @R1,#51H,00H

JNC NEXT1

MOV A,#0FFH

SJMP NEXT2

NEXT: MOV A,#0AAH

NEXT2: SJMP NEXT2

累加器 A=( )

(2) MOV A,#0FBH

MOV PSW,#10H

ADD A,#7FH

若PSW=00,当执行完上述程序段后,将PSW各位状态填入下表:

PSW

27.改正下列指令

MOV @R3,A

MOV DPTR,A

INC @R3 I

DEC DPTR

ADDC #30H,A

28. 设内部RAM(30H)=5AH,(5AH)=40H,(40H)=00H,端口P1=7FH,问执行下列指令后,各有关存储单元(即R0,R1,A,B,P1,30H,40H及5AH单元)的内容如何(8分) MOV R0,#30H

MOV A,@R0

MOV R1,A

MOV B,R1

MOV @R1,P1

MOV A,P1

MOV 40H,#20H

MOV 30H,40H

单片机程序分析题练习B2复习过程

1.程序如下: MOV SP,#13H MOV 33H,#7FH MOV 44H,#0ABH PUSH 33H PUSH 44H POP 33H POP 44H 程序执行后,(33H)=0ABh ,(44H)=7Fh 2.下列各条指令其源操作数的寻址方式是什么?各条指令单独执行后,A中的结果是什么?设(60H)=35H,(A)=19H,(R0)=30H,(30H)=0FH。 (1)MOV A,#48H ;寻址方式: (A)= 48H (2)ADD A,60H ;寻址方式: (A)= 4DH (3)ANL A,@R0 ;寻址方式: (A)= 10H 3.阅读下列程序段,写出每条指令执行后的结果,并说明此程序段完成什么功能? MOV R1,#30H ;(R1)=30H MOV A,#64H ;(A)= 64H ADD A,#47H ;(A)=ABH ,(CY)= 0 , (AC)= 0 DA A ;(A)=31H ,(CY)=1 , (AC)= MOV @R1,A ;(R1)= 30H ,(30H)= 31H 此程序段完成的功能 4.设(A)=38H,R0=28H,(28H)=18H,执行下列程序后,(A)=0 ORL A,#27H ANL A,28H XCHD A,@R0 CPL A 5.设(A)=38H,(20H)=49H,PSW=00H,(B)=02H,填写以下中间结果。 SETB C ADDC A, 20H (A)= 82H (CY)= 0 (AC)= 1 RLC A (A)=04H (CY)=1 (P)= 1 MUL AB (A)=08H (B)=00H (OV)=0 6.已知(R0)=20H, (20H ) =10H, (P0) =30H, (R2) =20H, 执行如下程序段后( 40H ) =15H MOV @R0 , #11H (20H)=11H MOV A , R2 A=20H

51单片机实例程100讲全集

目录 目录 (1) 函数的使用和熟悉 (4) 实例3:用单片机控制第一个灯亮 (4) 实例4:用单片机控制一个灯闪烁:认识单片机的工作频率 (4) 实例5:将P1口状态分别送入P0、P2、P3口:认识I/O口的引脚功能 (5) 实例6:使用P3口流水点亮8位LED (5) 实例7:通过对P3口地址的操作流水点亮8位LED (6) 实例8:用不同数据类型控制灯闪烁时间 (7) 实例9:用P0口、P1 口分别显示加法和减法运算结果 (8) 实例10:用P0、P1口显示乘法运算结果 (9) 实例11:用P1、P0口显示除法运算结果 (9) 实例12:用自增运算控制P0口8位LED流水花样 (10) 实例13:用P0口显示逻辑"与"运算结果 (10) 实例14:用P0口显示条件运算结果 (11) 实例15:用P0口显示按位"异或"运算结果 (11) 实例16:用P0显示左移运算结果 (11) 实例17:"万能逻辑电路"实验 (11) 实例18:用右移运算流水点亮P1口8位LED (12) 实例19:用if语句控制P0口8位LED的流水方向 (13) 实例20:用swtich语句的控制P0口8位LED的点亮状态 (13) 实例21:用for语句控制蜂鸣器鸣笛次数 (14) 实例22:用while语句控制LED (15) 实例23:用do-while语句控制P0口8位LED流水点亮 (16) 实例24:用字符型数组控制P0口8位LED流水点亮 (17) 实例25:用P0口显示字符串常量 (18) 实例26:用P0 口显示指针运算结果 (19) 实例27:用指针数组控制P0口8位LED流水点亮 (19) 实例28:用数组的指针控制P0 口8 位LED流水点亮 (20) 实例29:用P0 、P1口显示整型函数返回值 (21) 实例30:用有参函数控制P0口8位LED流水速度 (22) 实例31:用数组作函数参数控制流水花样 (22) 实例32:用指针作函数参数控制P0口8位LED流水点亮 (23) 实例33:用函数型指针控制P1口灯花样 (25) 实例34:用指针数组作为函数的参数显示多个字符串 (26) 实例35:字符函数ctype.h应用举例 (27) 实例36:内部函数intrins.h应用举例 (27) 实例37:标准函数stdlib.h应用举例 (28) 实例38:字符串函数string.h应用举例 (29) 实例39:宏定义应用举例2 (29) 实例40:宏定义应用举例2 (29) 实例41:宏定义应用举例3 (30)

单片机课程设计报告--心形流水灯

井冈山大学 机电工程学院 单片机 课程设计报告 课程名称:单片机 设计题目:心形流水灯 姓名:玉红 专业:生物医学工程 班级:11级医工本一班 学号:110615017 指导教师:王佑湖 2013年11月27日

目录 1引言 (2) 1.1设计任务 (2) 1.2设计要求……………………………………………… ..2 2 课题综述 (2) 2.1课题的来源 (2) 2.2面对的问题 (2) 3 系统分析 (2) 3.1 STC89C52单片机引脚图及引脚功能介绍 (2) 4 系统设计 (4) 4.1硬件设计 (4) 4.1.1硬件框图 (4) 4.1.2硬件详细设计 (5) 4.2 软件设计 (5) 4.3 硬件原理图 (6) 4.4 元件清单 (6) 4.5 硬件焊接

图 (6) 4.6 代码编写 (7) 5心得体会 (7) 6致 (8) 参考文献 (8) 1 引言 单片机课程设计主要是为了让我们增进对STC89C51单片机电路 的感性认识,加深对理论方面的理解。了解软硬件的有关知识,并掌握软硬件设计过程、方法及实现,为以后设计和实现应用系统打下良好基础。另外,通过简单课题的设计练习,使我们了解必须提交的各项工程文件,达到巩固、充实和综合运用所学知识解决实际问题的目 的。 1.1设计任务 设计一个单片机控制的流水灯系统 1.2设计要求 (1)32个LED灯; (2)可实现多种的亮灯(如左循环,右循环,间隔闪,90度交叉闪等)。 2 课题综述

2.1 课题的来源 当今社会,这种由单片机芯片控制各种硬件工作的技术也日益成熟,并普及在交通、化工、机械等各个领域。而流水灯这项技术在生活中的应用更是广泛,较为贴近生活。而流水灯控制的设计所需要的知识也正好吻合了我们本学期对于单片机这门课程的学习,所以设计流水灯控制的这个课题让我们对知识的学习和巩固都有了进一步的加深。 2.2 面对的问题 这次课程设计是通过STC89C52位单片机实现。但面对的问题却是两方面的:一个是软件的设计,也就是实现流水灯控制功能的程序编辑;另一个是硬件的设计,需要我们自己连接、焊接电路板。而更为严峻的就是设计的最后还要将软硬件相结合。 3 系统分析 3.1 STC 89C52单片机引脚图及引脚功能介绍 本次设计的目的在于加深STC89C52单片机的理解,首先来简单认识一下,它的引脚如图3-1所示: 图3.1 STC89C52

单片机程序分析题练习B2

1.程序如下: MOV SP , #13H MOV 33H ,#7FH MOV 44H ,#0ABH PUSH 33H PUSH 44H POP 33H POP 44H 程序执行后, (33H)=0ABh 2.下列各条指令其源操作数的寻址方式是什么各条指令单独执行后, (60H )=35H ,(A ) =19H ,(R0)=30H ,(30H )=0FH 。 ( 1 ) MOV A , #48H ;寻址方式 A) = 48H ( 2) ADD A , 60H ;寻址方式 A) = 4DH ( 3) ANL A , @R0 ;寻址方式 A) = 10H 3.阅读下列程序段,写出每条指令执行后的结果,并说明此程序段完成什么功能 MOV R1, #30H ;( R1) =30H MOV A , #64H ; ( A) = 64H ADD A , #47H ;( A) =ABH ,( CY) = 0 , ( AC) = 0 DA A ;( A) =31H ,( CY) =1 ( AC) = MOV @R1, A ; ( R1) = 30H , ( 30H) = 31H 此程序段完成的功能 4. 设(A)=38H,R0=28H,(28H)=18H,执行下列程序后,(A) =0 ORL A , #27H ANL A , 28H XCHD A , @R0 CPL A 5. 设(A)=38H,(20H)=49H,PSW=00H,(B)=02H,填写以下中间结果。 SETB C ADDC A, 20H (A)= 82H (CY)= 0 (AC)= 1 RLC A (A)=04H (CY)=1 (P) 1 MUL AB (A)=08H (B)=00H (OV)=0 6. 已知( R0) =20H, (20H ) =10H, (P0) =30H, (R2) =20H, 执行如下程序段后 ( 40H ) =15H MOV @R0 , #11H (20H)=11H MOV A , R2 A=20H ,(44H )=7Fh A 中的结果是什么设

基于单片机的心形流水灯毕业设计论文

课程设计(论文)说明书 题目:心形流水灯 院(系):信息与通信学院 专业:通信工程 学生姓名: 学号: 指导教师: 职称:讲师 2012年12 月1日

摘要 本论文基于单片机技术与单片机芯片AT89S51芯片功能和C语言程序,实现心形流水灯的多种亮与灭的循环。首先,我们了解单片机的一些技术,了解了单片机芯片AT89S51的一些功能;然后结合C语言编程;最后将它们运用到实际的电路,使心形LED灯实现多种亮灭方法。本论文介绍关于流水灯的运用和单片机技术;然后介绍芯片AT89S51;最后介绍运用到的相关软件.矚慫润厲钐瘗睞枥庑赖。 关键词:单片机;流水灯;C语言;

Abstract This paper Based on the single chip microcomputer and single chip microcomputer chip AT89S51 chip function and C language program,Realization of flowing water light heart a variety of light and the cycle of destruction。primarily,We know some of the single chip microcomputer technology,Understanding of the single chip microcomputer chip AT89S51 of some functions, Then based on the C language programming; Finally they are applied to the practical circuit, Make heart LED lamp achieve a variety of light out method. This paper introduces about the use of flowing water light and single chip microcomputer; and then introduced chip AT89S51; At the end of this paper applied to software.聞創沟燴鐺險爱氇谴净。Key words:micro-computer;light water ;C programming language残骛楼諍锩瀨濟溆塹籟。

心型流水灯制作教程

作为一个电子技术爱好者,先就做一个最简单的心形流水灯玩玩吧。 本教程主要特点就是简单,不要你懂原理,不要你懂编程,只要最基本的元件和材料就可以完成。 首先我们来准备和认识元件。 1、最大的一个部件,洞洞板也叫万能板,9*15cm的刚刚好。便宜的万能板1元一块,你也可以用双面喷锡的质量好的玻纤板,4元一块。 2、主角单片机。要求用40脚的,刚好驱动32个led。建议用STC89C52RC,最常见便宜而且不用复位电路。 3、led,5mm的颜色随你喜欢,32个,注意长脚为正极。我用的是白发蓝,你也可以用不同的颜色组合各种效果。 4、电阻,限制led的工作电流,这个严格讲要经过计算,咱们随便作就不管了,200欧姆到1K欧姆的都可以,只是led的亮度有点区别。贴片电阻和直插的都可以,建议用贴片美观,熟练了焊起来更快,只要稍加练习就可以,实在没信心直插的也可以,反正在背面也没用什么影响。 5、镊子,焊接贴片电阻要用到。 6、晶振和瓷片电容。 晶振采用12MHz的,电容15pF-33pF都可以。 7、导线几根,连接电源和飞线用,当然飞线越少越好,一是美观,二是飞线容易出问题。 8、焊接工具。烙铁、焊锡、烙铁架、海绵、斜口钳等等,大家自己有啥样就用什么。我的是坏烙铁拼凑的白菜白光,看着烂用着还可以。 9、还有最好用IC座,一是保护单片机二是方便拆卸和烧录。第一个是固定式IC座,元,第二个是活体的,用的更方便,4元一个。 10、电源部分。这里可以废物利用,用废弃的手机电池,在正负极接上导线,安装XH插头,插座焊在洞洞板上。不必在意电压,只是点亮led,手机电池标准电压,充满这里用没问题。可以加一个拨动开关控制电源。 接下来开始焊接,注意元件的位置和极性。 先焊最小系统,ic座,晶振、电容这些,然后是led,注意正极(长脚)朝外,负极(断脚)朝向单片机。接着是led的负极用锡接过线接到单片机的io口,注意中间接电阻。最后连

单片机程序分析试题与答案

六、设计题 1.某单片机控制系统有8个发光二极管。试画出89C51与外设的连接图并编程使它们由右向左轮流点亮。 答:图(5分) 构思(3分) MOV A,#80H (1分) UP:MOV P1,A (1分) RR A (2分) SJMP UP (1分) 2.某控制系统有2个开关K1和K2,1个数码管,当K1按下时数码管加1,K2按下时数码管减1。试画出8051与外设的连接图并编程实现上述要求。 答:图(5分) 构思(3分) 程序(4分) ORG 0000H LJMP MAIN ORG 0003H LJMP AINT0 ORG 0013H LJMP BINT1 MAIN: MOV IE,#83H SETB IT0 SETB IT1 MOV R0,#00H MOV DPTR,#TAB UP: MOV A,R0 MOVC A,@A+DPTR MOV P1,A SJMP UP AINT0: INC R0 CJNE R0,#10,AINT01 MOV R0,#0 AINT01: RETI BINT1: DEC R0 CJNE R0,#0FFH,BINT11 MOV R0,#9 BINT11: RETI 1.已知在累加器A中存放一个BCD数(0~9),请编程实现一个查平方表的子程序。 1.SQR:1NC A MOVC A,@A+PC RET TAB:DB 0,1,4,9,16 DB 25,36,49,64,81 2.请使用位操作指令实现下列逻辑操作:BIT=(10H∨P1.0)∧(11H∨C Y) 2.ORL C,11H

MOV 12H,C MOV C,P1.0 ORL C,/10H ANL C,12H MOV BIT,C RET 3.已知变量X存于V AR单元,函数值Y存于FUNC单元,按下式编程求Y值。 Y= 10 0 1 x x x > - = 0,Y=1 MOV A,#0FFH ;x<0,Y=-1 SJMP RES POSI:MOV A,#01H RES:MOV FUNC,A RET 4.已知在R2中存放一个压缩的BCD码,请将它拆成二个BCD字节,结果存于SUM开始的 单元中(低位在前)。 4. MOV R0,#SUM MOV A,R2 ANL A,#OFH MOV @R0,A ;存低字节BCD MOV A,R2 ANL A,#0F0H SW AP A 1NC R0 MOV @R0,A ;存高字节BCD RET 5.将存于外部RAM 8000H开始的50H数据传送0010H的区域,请编程实现。 5. MOV DPTR,#8000H MOV R0,#10H MOV R2,#50H LOOP:MOVX A,@DPTR ;取数 MOVX @R0,A ;存数 1NC DPTR 1NC R0 DJNZ R2,LOOP RE T

最全最好的课程设计-51单片机电子日历时钟( 含源程序)

LED日历时钟课程设计 院系: 班级: 姓名: 学号: 指导教师: 2012 年06 月16 日

目录

摘要 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习、应用,以AT89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。 第一章前言 数字电子钟具有走时准确,一钟多用等特点,在生活中已经得到广泛的应用。虽然现在市场上已有现成的电子钟集成电路芯片,价格便宜、使用也方便,但是人们对电子产品的应用要求越来越高,数字钟不但可以显示当前的时间,而且可以显示期、农历、以及星期等,给人们的生活带来了方便。另外数字钟还具备秒表和闹钟的功能,且闹钟铃声可自选,使一款电子钟具备了多媒体的色彩。单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。 时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。 AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k B ytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。 AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

5 STC15F2K60S2单片机的程序设计 例题

第5章STC15F2K60S2单片机的程序设计 例题 例5.1 分析ORG在下面程序段中的控制作用 ORG 1000H START: MOV R0,#60H MOV R1,#61H …… ORG 1200H NEXT: MOV DPTR,#1000H MOV R2,#70H …… 解:以START开始的程序汇编后机器码从1000H单元开始连续存放,不能超过1200H 单元;以NEXT开始程序汇编后机器码从1200H单元开始连续存放。 例5.2 分析END在下面程序段中的控制作用。 START: MOV A,#30H …… END START NEXT: …… RET 解:汇编程序对该程序进行汇编时,只将END伪指令前面的程序转换为对应的机器代码程序,而以NEXT标号为起始地址的程序将予以忽略。因此,若NEXT标号为起始地址的子程序是本程序的有效子程序的话,应将整个子程序段放到END伪指令的前面。

例5.3 分析下列程序中EQU指令的作用 AA EQU R1 ;给AA赋值R1 DA TA1 EQU 10H ;给DA TA1赋值10H DELAY EQU 2200H ;给DELAY赋值2200H ORG 2000H MOV R0,DATA1 ;R0←(10H) MOV A,AA ;A←(R1) LCALL DELAY ;调用起始地址为2200H的子程序 END 解:经EQU定义后,AA等效于R1,DATA1等效于10H,DELAY等效于2200H,该程序在汇编时,自动将程序中AA换成R1、DATA1换成10H、DELAY换成2200H,再汇编为机器代码程序。 使用赋值伪指令EQU的好处在于程序占用的资源数据符号或寄存器符号用占用源的英文或英文缩写字符名称来定义,后续编程中凡是出现该数据符号或寄存器符号就用该字符名称代替,这样,采用有意义的字符名称进行编程,更容易记忆和不容易混淆,也便于阅读。

单片机编程全集(含源代码)

前言 (2) 基础知识:单片机编程基础 (2) 第一节:单数码管按键显示 (4) 第二节:双数码管可调秒表 (6) 第三节:十字路口交通灯 (7) 第四节:数码管驱动 (9) 第五节:键盘驱动 (10) 第六节:低频频率计 (15) 第七节:电子表 (18) 第八节:串行口应用 (19)

前言 本文是本人上课的一个补充,完全自写,难免有错,请读者给予指正,可发邮件到ZYZ@https://www.wendangku.net/doc/875444540.html,,或郑郁正@中国;以便相互学习。结合课堂的内容,课堂上的部分口述内容,没有写下来;有些具体内容与课堂不相同,但方法是相通的。https://www.wendangku.net/doc/875444540.html, 针对当前的学生情况,尽可能考虑到学生水平的两端,希望通过本文都学会单片机应用。如果有不懂的内容,不管是不是本课的内容,都可以提出来,这些知识往往代表一大部分同学的情况,但本人通常认为大家对这些知识已精通,而在本文中没有给予描述,由此影响大家的学习。对于这些提出问题的读者,本人在此深表谢意。 想深入详细学习单片机的同学,可以参考其它有关单片机的书籍和资料,尤其是外文资料。如果有什么问题,我们可以相互探讨和研究,共同学习。 本文根据教学的情况,随时进行修改和完善,所以欢迎同学随时注意本文档在课件中的更新情况。 基础知识:单片机编程基础 单片机的外部结构: 1、DIP40双列直插; 2、P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平) 3、电源VCC(PIN40)和地线GND(PIN20); 4、高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位) 5、内置振荡电路,外部只要接晶体至X1(PIN18)和X0(PIN19);(频率为主频的12倍) 6、程序配置EA(PIN31)接高电平VCC;(运行单片机内部ROM中的程序) 7、P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1 单片机内部I/O部件:(所为学习单片机,实际上就是编程控制以下I/O部件,完成指定任务) 1、四个8位通用I/O端口,对应引脚P0、P1、P2和P3; 2、两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1) 3、一个串行通信接口;(SCON,SBUF) 4、一个中断控制器;(IE,IP) https://www.wendangku.net/doc/875444540.html, 针对AT89C52单片机,头文件AT89x52.h给出了SFR特殊功能寄存器所有端口的定义。教科书的160页给出了针对MCS51系列单片机的C语言扩展变量类型。 C语言编程基础: 1、十六进制表示字节0x5a:二进制为01011010B;0x6E为01101110。 2、如果将一个16位二进数赋给一个8位的字节变量,则自动截断为低8位,而丢掉高8位。 3、++var表示对变量var先增一;var—表示对变量后减一。 4、x |= 0x0f;表示为 x = x | 0x0f; 5、TMOD = ( TMOD & 0xf0 ) | 0x05;表示给变量TMOD的低四位赋值0x5,而不改变TMOD的高四位。 6、While( 1 ); 表示无限执行该语句,即死循环。语句后的分号表示空循环体,也就是{;} 在某引脚输出高电平的编程方法:(比如P1.3(PIN4)引脚)

基于51单片机心形流水灯C语言源程序

基于51单片机心形流水灯C语言源程序

#include unsigned int x,y; void delayms(unsigned int z) //延时 { unsigned int i,j; for(i=z;i>0;i--) for(j=150;j>0;j--); } void On_all() //开启所有灯 { P0=0x00; P1=0x00; P2=0x00; P3=0x00; } void Off_all()//关闭所有灯 { P0=0xff; P1=0xff; P2=0xff; P3=0xff; } void ls()//正向流水灯 { P0=0x00; delayms(400); P2=0x00; delayms(400); P3=0x00; delayms(400); P1=0x00; delayms(400); P0=0x01; delayms(50);

P0=0x04; delayms(50); P0=0x08; delayms(50); P0=0x10; delayms(50); P0=0x20; delayms(50); P0=0x40; delayms(50); P0=0x80; delayms(50); P0=0x00; P2=0x01; delayms(50); P2=0x02; delayms(50); P2=0x04; delayms(50); P2=0x08; delayms(50); P2=0x10; delayms(50); P2=0x20; delayms(50); P2=0x40; delayms(50); P2=0x80; delayms(50); P2=0x00; P3=0x80; delayms(50); P3=0x40; delayms(50); P3=0x20; delayms(50); P3=0x10; delayms(50); P3=0x08; delayms(50); P3=0x04; delayms(50);

基于51单片机FAT32文件系统程序

基于51单片机FAT32文件系统程序 #ifndef __ZNFAT_H__ #define __ZNFAT_H__ #include "mytype.h" //类型重定义 /*******************************************************/ //znFAT的裁减宏--------------------------------------------------------- //#define ZNFAT_ENTER_DIR //有此宏,函数 znFAT_Enter_Dir() 参与编译 #define ZNFAT_OPEN_FILE //有此宏,函数 znFAT_Open_File() 参与编译 //#define ZNFAT_SEEK_FILE //有此宏,函数 znFAT_Seek_File() 参与编译 //#define ZNFAT_READ_FILE //有此宏,函数 znFAT_Read_File() 参与编译 //#define ZNFAT_READ_FILEX //有此宏,函数 znFAT_Read_FileX() 参与编译 //#define ZNFAT_ADD_DAT //有此宏,函数 znFAT_Add_Dat() 参与编译 //#define ZNFAT_CREATE_DIR //有此宏,函数 znFAT_Create_Dir() 参与编译 //#define ZNFAT_CREATE_FILE //有此宏,函数 znFAT_Create_File() 参与编译 //#define ZNFAT_DEL_FILE //有此宏,函数 znFAT_Del_File() 参与编译 //#define ZNFAT_XCOPY_FILE //有此宏,函数 znFAT_XCopy_File() 参与编译 //#define ZNFAT_RENAME_FILE //有此宏,函数 znFAT_Rename_File() 参与编译 //#define ZNFAT_GET_TOTAL_SIZE //有此宏,函数 znFAT_Get_Total_Size() 参与编译 //#define znFAT_GET_REMAIN_CAP //有此宏,函数 znFAT_Get_Remain_Cap() 参与编译 #include "cj.h" #include "cj.h" //---------------------------------------------------------------------- #define SOC(c) (((c-pArg->FirstDirClust)*(pArg->SectorsPerClust))+pArg->FirstDirSector) // 用于计算簇的开始扇区#define CONST const //设备表 #define SDCARD 0 //SD卡 #define UDISK 1 //U盘 #define CFCARD 2 //CF卡 #define OTHER 3 //其它 //这里的存储设备表,可以灵活扩充,以实现对更多存储设备的支持 //------------------------------------------- #define MAKE_FILE_TIME(h,m,s) ((((unsigned int)h)<<11)+(((unsigned int)m)<<5)+(((unsigned int)s)>>1)) /* 生成指定时分秒的文件时间数据 */ #define MAKE_FILE_DATE(y,m,d) (((((unsigned int)y)+20)<<9)+(((unsigned int)m)<<5)+((unsigned int)d)) /* 生成指定年月日的文件日期数据 */ //DPT:分区记录结构如下 struct PartRecord { UINT8 Active; //0x80表示此分区有效 UINT8 StartHead; //分区的开始磁头 UINT8 StartCylSect[2];//开始柱面与扇区 UINT8 PartType; //分区类型 UINT8 EndHead; //分区的结束头 UINT8 EndCylSect[2]; //结束柱面与扇区 UINT8 StartLBA[4]; //分区的第一个扇区 UINT8 Size[4]; //分区的大小

单片机习题答案(1章-9章)

第2章习题参考答案 2-1 MCS-51系列单片机内部有哪些主要的逻辑部件? 答:一个8位CPU;一个片内振荡器及时钟电路;4K字节ROM程序存储器;128字节RAM数据存储器;两个16位定时器/计数器;可寻址64K外部数据存储器和64K外部程序存储器空间的控制电路;32条可编程的I/O线(四个8位并行I/O端口);一个可编程全双工串行口;具有五个中断源、两个优先级嵌套中断结构 2-2 MCS-51设有4个8位端口(32条I/O线),实际应用中8位数据信息由哪一个端口传送?16位地址线怎样形成?P3口有何功能? 答:实际应用中8位数据信息由P1口传送。16位地址线由P0口输出低8位地址A7~A0,P2口输出高8位地址A15~A8。P3口是一个多用途的端口,也是一个准双向口,作为第一功能使用时,其功能同P1口;当作第二功能使用时,P3.0—RXD串行输入(数据接收)口,P3.1—TXD串行输出(数据发送)口,P3.2—外部中断0输入线,P3.3—外部中断1输入线,P3.4—T0定时器0外部输入,P3.5—T1定时器1外部输入,P3.6—WR外部数据存储器写选通信号输出,P3.7—外部数据存储器读选通信号输入。 2-3 MCS-51的存储器结构与一般的微型计算机有何不同?程序存储器和数据存储器各有何作用? 答:MCS-51存储器结构与常见的微型计算机的配置方式不同,它把程序存储器和数据存储器分开,各有自已的寻址系统、控制信号和功能。 程序存储器用来存放程序和始终要保留的常数,如经汇编后所编程序的机器码。数据存储器通常用来存放程序运行中所需要的常数或变量,例如模/数转换时实时采集的数据等。2-4 MCS-51内部RAM区功能结构如何分配?4组工作寄存器使用时如何选用?位寻址区域的字节地址范围是多少? 答:MCS-51系列单片机内部数据存储器:00H ~ 7FH单元组成的低128字节地址空间的RAM 区,又分为为工作寄存器区(00H~1FH)、位寻址区(20H~2FH)和数据缓冲区(30H~7FH)。80H ~ FFH(128 ~255)单元组成的高128字节地址空间的特殊功能寄存器(又称SFR)区。对于8032、8052、8752的单片机还有80H~FFH单元组成的高128字节地址空间的RAM区。 4组工作寄存区是由程序状态字PSW(特殊功能寄存器,字节地址为0D0H)中的D4、D3 位寻址区域的字节地址范围是20H~2FH(对应的位地址范围是00H~7FH)。 2-5 特殊功能寄存器中哪些寄存器可以位寻址?它们的字节地址是什么? 答:P0字节地址80H,TCON字节地址88H,P1字节地址90H,SCON字节地址98H,P2字节地址A0H,IE字节地址A8H,P3字节地址B0H,IP字节地址B8H,PSW字节地址D0H,ACC字节地址E0H,B字节地址F0H。 2-6 简述程序状态字PSW中各位的含义。 答:CY(PSW·7)进位标志,AC(PSW·6)辅助进位标志,F0(PSW·5)用户标志位RS1、RS0(PSW·4、PSW·3)寄存器区选择控制位,OV(PSW·2)溢出标志,P(PSW.0)奇偶标志,每个指令周期都由硬件来置位或清“0”,以表示累加器A 中1的位数的奇偶数 2-7 一个时钟频率为6MHz的单片机应用系统,它的时钟周期、机器周期、指令周期分别是

LED点阵心形流水灯单片机设计

河南理工大学 开放实验室单片机设计报 LED点阵心形流水灯礼品 目录 0 前言 (1) 1系统组成与功能 (1) 1.1 系统组成 (1) 1.1.1 AT89C51单片机 (1) 1.1.2 16乘16点阵 (2) 1.2 系统功能 (3) 2系统原理 (3) 2.1系统仿真图 (3) 2.2 实物照片 (4) 3程序流程图 (6) 4程序代码 (7) 5结论 (14) 参考文献 (14)

1 基于单片机控制心形流水灯跟点阵 0 前言 随着社会的发展,单片机得到了广泛的应用,人们越来越重视单片机的应用。比如温度是和每个人息息相关的,并且在有的生产车间里还要进行温度时时测量,甚至是对温度的进一步调控等,这些都是单片机的应用之例。本设计是用单片机和点阵加一个小的流水灯电路,作为玩具挺有趣的。 这次的作品,初衷是希望通过单片机学习,做个生日礼物送给朋友。由于时间紧迫,做的有些仓促,望原谅。 1系统组成与功能 1.1 系统组成 本系统主要有AT89C51单片机、18b20、1602、蜂鸣器、四位一体七段数码管等元件组成。 1.1.1 AT89C51单片机 AT89S51具有如下特点:40个引脚,8k Bytes Flash 片内程序存储器,256 bytes 的随机存取数据存储器(RAM ),32个外部双向输入/输出(I/O )口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT ) 电路,片内时钟振荡器。 此外,AT89S52设计和配置了振荡频率可 为0Hz 并可通过软件设置省电模式。空闲模式下,CPU 暂停工作,而RAM 定时计数器,串行口,外中断 系统可继续工作,掉电模式冻结振荡器而保存RAM 的数据,停止芯片其它功能直至外中断激活或硬件复位。 引脚图如图1-1所示。 管脚说明 图1-1 A T89C51引脚图

单片机程序分析

有一长度为10字节的字符串存放在8031单片机内部RAM中,其首地址为40H。要求将该字符串中每一个字符加偶校验位。(以调用子程序的方法来实现。) 源程序如下: ORG 1000H MOV R0,#40H MOV R7,#10 NEXT:MOV A,① ACALL SEPA MOV @R0,A INC R0 DJNZ ②,NEXT SJMP $ SEPA:ADD A,#00H ③PSW.0,SRET ORL A,④ SRET:⑤ ① @R0 ② R7 ③ JNB ④ #80H ⑤ RET 4设内部RAM(30H)=5AH,(5AH)=40H,(40H)=00H,端口P1=7FH,问执行下列指令后,各有关存储单元(即R0,R1,A,B,P1,30H,40H及5AH单元)的内容如何?(8分) MOV R0,#30H ;R0=30H MOV A,@R0 ;A=5AH MOV R1,A ;R1=5AH MOV B,R1 ;B=5AH MOV @R1,P1 ;(5AH)=7FH MOV A,P1 ;A=7FH MOV 40H,#20H ;(40H)=20H MOV 30H,40H ;(30H)=20H 解:每一条指令执行后的结果如注释字段所标。最后结果为:R0=30H,R1=5AH,A=7FH,B=5AH,P1=7FH,(30H)=20H,(40H)=20H,(5AH)=7FH。 四、程序阅读与分析题 1、试阅读下面的程序,指出该程序结束后累加器ACC和寄存器TH0的值,并说明该程序完成了怎样的功能。ORG 0000H MOV SP,#60H MOV A,#10H MOV TH0,#20H PUSH ACC PUSH TH0 POP ACC POP TH0 END 答:利用堆栈交换了ACC和TH0的内容,(A)=20H,(TH0)=10H

(完整版)51单片机汇编指令(全)

指令中常用符号说明 Rn当前寄存器区的8个工作寄存器R0~R7(n=0~7) Ri当前寄存器区可作为地址寄存器的2个工作寄存器R0和R1(i=0,1) Direct8位内部数据寄存器单元的地址及特殊功能寄存器的地址 #data表示8位常数(立即数) #data16表示16位常数 Add16表示16位地址 Addr11表示11位地址 Rel8位代符号的地址偏移量 Bit表示位地址 @间接寻址寄存器或基址寄存器的前缀 ( )表示括号中单元的内容 (( ))表示间接寻址的内容 指令系统 数据传送指令(8个助记符) 助记符中英文注释 MOV Move 移动 MOV A , Rn;Rn→A,寄存器Rn的内容送到累加器A MOV A , Direct;(direct)→A,直接地址的内容送A MOV A ,@ Ri;(Ri)→A,RI间址的内容送A MOV A , #data;data→A,立即数送A MOV Rn , A;A→Rn,累加器A的内容送寄存器Rn MOV Rn ,direct;(direct)→Rn,直接地址中的内容送Rn MOV Rn , #data;data→Rn,立即数送Rn MOV direct , A;A→(direct),累加器A中的内容送直接地址中 MOV direct , Rn;(Rn)→direct,寄存器的内容送到直接地址 MOV direct , direct;(direct)→direct,直接地址的内容送到直接地址 MOV direct , @Ri;((Ri))→direct,间址的内容送到直接地址 MOV direct , #data;8位立即数送到直接地址中 MOV @Ri , A;(A)→@Ri,累加器的内容送到间址中 MOV @Ri , direct;direct→@Ri,直接地址中的内容送到间址中 MOV @Ri , #data; data→@Ri ,8位立即数送到间址中 MOV DPTR , #data16;data16→DPTR,16位常数送入数据指针寄存器,高8位送入DPH,低8位送入DPL中(单片机中唯一一条16位数据传送指令) (MOV类指令共16条)

基于单片机的心形流水灯毕业设计论文

基于单片机的心形流水灯毕业设计论文 此文档为WORD版可编辑修改

课程设计(论文)说明书 题目:心形流水灯 院(系):信息与通信学院 专业:通信工程 学生姓名: 学号: 指导教师: 职称: X年X月X日

摘要 本论文基于单片机技术与单片机芯片AT89S51芯片功能和C语言程序,实现心形流水灯的多种亮与灭的循环。首先,我们了解单片机的一些技术,了解了单片机芯片AT89S51的一些功能;然后结合C语言编程;最后将它们运用到实际的电路,使心形LED灯实现多种亮灭方法。本论文介绍关于流水灯的运用和单片机技术;然后介绍芯片AT89S51;最后介绍运用到的相关软件. 关键词:单片机;流水灯;C语言;

Abstract This paper Based on the single chip microcomputer and single chip microcomputer chip AT89S51 chip function and C language program,Realization of flowing water light heart a variety of light and the cycle of destruction。primarily,We know some of the single chip microcomputer technology,Understanding of the single chip microcomputer chip AT89S51 of some functions, Then based on the C language programming; Finally they are applied to the practical circuit, Make heart LED lamp achieve a variety of light out method. This paper introduces about the use of flowing water light and single chip microcomputer; and then introduced chip AT89S51; At the end of this paper applied to software. Key words:micro-computer;light water ;C programming language

相关文档
相关文档 最新文档