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

单片机程序分析

单片机程序分析
单片机程序分析

有一长度为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

2、程序段如下,试说明其功能。

MOV R0,#50H

MOV R1,#60H

MOV A,@R0

ADD A,@R1

MOV @R0,A

INC R0

INC R1

MOV A,@R0

ADDC A,@R1

MOV @R0,A

MOV 00H,C

答:双字节无符号数加法。被加数存放在内部RAM的51H、50H单元,加数存放在内部RAM的61H、60H单元,相加的结果存放在内部RAM的51H、50H单元,进位存放在位寻址区的00H位中。

五、综合应用题

3、设80C51单片机晶振频率为6MHz,定时器T0工作于方式1。要求80C51以中断方式工作并在P1.0引脚输出周期为500微秒的方波。试:计算初值、编写含有初始化功能的主程序和完成方波输出的中断服务程序。

答:机器周期为2微秒。定时时间250微秒。需要计数N=125

初值为65536-125=65411=FF83H,所以(TH0)=FFH,(TL0)=83H

工作方式设置:0000 0001B,即(TMOD)=01H

主程序:中断服务程序:(整体结构!)

MOV TMOD,#01H MOV TH0,#0FFH

MOV TH0,0FFH MOV TL0,#83H

MOV TL0,#83H CPL P1.0

SETB EA RETI

SETB ET0

SETB TR0

SJMP $

四、读程序(每小题4分,共20分)

1.执行下列程序段中第一条指令后,(1)(P1.7)=__0__ (P1.3)=__0___,(P1.2)=____0_____;执行第二条指令后,(2)(P1.5)=_____1____,(P1.4)=_____1____,(P1.3)=______1___.

ANL P1,#73H

ORL P1,#38H

2.下列程序段执行后,(A)=__0DH_______,(B)=_____11H____.

MOV A,#0FBH

MOV B,#12H

DIV AB

3.下列程序段执行后,(R0)=____7EH_____,(7EH)=__FFH_______,(7FH)=____3FH_____.

MOV R0,#7FH

MOV 7EH,#0

MOV 7FH,#40H

DEC @R0

DEC R0

DEC @R0

(DPTR)=4567H,在执行下列指令后,

(SP)=___0BH______,内部RAM(0AH)=____67H_____,

4.已知(SP)=09H,

(0BH)=___45H______

PUSH DPL

PUSH DPH

5.下列程序中注释的数字为执行该指令所需的机器周期数,若单片机的晶振频率为6MHz,问执行下列程序需要多少时间

MOV R3,#100;1

LOOP:NOP ;1

NOP

NOP

DJNZ R3,LOOP ;2

RET ; 2

解:一个机器周期为2μs

执行程序所需时间T=2μs*(5×100+3)=1006μs≈1ms

五、编程题(每小题4分,共20分)

1.请使用位操作指令,实现下列逻辑操作:

P1.5=ACC.2∧P2.7∨ACC.1∧P2.0

解:.先进行与操作,再进行或操作程序如下:

MOV C,ACC.1

ANL C,P2,0

MOV 12H,C

MOV,C,A CC.2

ANL C,P2.7

ORL C,12H

MOV P1.5,C

RET

2.在外部RAM首地址为TABLE的数据表中有10个字节数据,请编程将每个字节的最高位无条件地置1.

解:MOV R2,#10

MOV DPRT,#TABLE

LOOP:MOV X A,@DPRT;取一数

ORL A,#80H;最高位置1

MOV X @DPTR,A;写回原地址

1NC DPTR;处理下一单元

DJNZ R2,LOOP

RET

3.已知内部RAM 30H单元开始存放20H个数据,将其传送到外部RAM的0000H单元开始的存储区,请编程实现。

解:MOV R0,#30H

MOV R1,#00H

MOV R2,#20H

LOOP:MOV A,@R0;取数

MOV X @R1,A;存数

1NC R0

1NC R1

DJNZ R2,LOOP RET

4.已知8个无符号数之和存于R3R4,求其平均值,结果仍存于R3R4中,请编程实现(R3为高字节)。 解:利用移位指令作除8操作,程序如下: MOV R2,#3 LOOP :CLR C MOV A ,R3

RRC A ;高字节除以2,末位移入C ,高位补0 MOV R3,A ;暂存高字节 MOV A ,R4

RRC A ;低字节除以2,高字节末位移入低字节高位 MOV R3,A DJNZ R2,LOOP RET

5.两个字符串分别存放在首地址为42H 和52H 的内部RAM 中,字符串长度放在41H 单元,请编程比较两个字符串。若相等,则把数字00H 送40H 单元,否则把0FFH 送40H 单元。

解:有一个字节不等,整个字符串不相等,所有字节相等,两字串才相等 MOV R0,#42H MOV R1,#52H

LOOP :MOV A ,@R0

CLR C ;不相等,FFH →40H SUBB A ,@R1

JNZ LOOP1 ;相等时,比较下一字节 INC R0 INC R1

DJNZ 41H ,LOOP

MOV 40H ,#0 ;所有字符均相等,则两字串相等。 RET

LOOP1:MOV 40H ,#0FFH RET 三.计算题(22分) 1.(A )=3BH ,执行ANL A ,#9EH 指令后,(A )= (CY )=

2.JNZ REL 为2B 指令,放于1308H ,转移目标地址是134AH ,求偏移量REL= 3.若(A )=C3H ,(R0)=AAH ,执行ADD A ,R0后,(A )= (CY )= (OV )= (AC )= 4.若(A )=50H ,(B )=A0H ,执行MUL AB 后,(A )= (B )= (CY )= (OV )=

5.SJMP 0E7H 为2B 指令,放于F010H ,目标地址= 四.阅读并分析程序(28分)

1.2506H M5:MOV SP ,#58H 2509H MOV 10H ,#0FH 250CH MOV 11H ,#0BH

250FH ACALL XHD ;PC+2→PC , 7~015~810~01,1,SP SP PC SP SP SP PC SP addr PC +→→??

?

?+→→????

→??

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)=

已知:片内RAM的20H中为01H,执行下列程序后(30H)=

MOV A,20H

INC A

MOV DPTR,#2000H

MOVC A,@A+DPTR

CPL A

MOV 30H,A

SJMP $

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

MOV A,@R0

MOV @R0,40H

MOV 40H,A

MOV R0,#35H

问执行程序后,R0= A= 4BH= 40H=

4.若PSW=00, 执行下列程序后,PSW的各位状态如何?

MOV A,#0FBH

MOV PSW,#10H

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. 将4个单字节数放片内30H~~33H,它们求和结果放在片内40H,41H单元。

ORG 1000H

MOV R7,#04H

MOV R0,30H

CLR A

MOV 41H,A

LOOP:ADD A,@R0

JNC NEXT

INC _____

NEXT:INC _____

DJNZ R7,LOOP

MOV 40H,A

SJMP $

END

3.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

4.编程序将片内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

三.计算题:(22分)

(1)(A)=1AH (CY)=不受影响

(2)REL=40H

(3)(A)= 6DH (CY)= 1 (OV)=1 (AC)=0

(4)(A)=00H (B)=32H (CY)= 总为0 (OV)=1

(5)目标地址=EFF9H

四:阅读并分析程序(28分)

(1)1)执行POP 10H后堆栈内容?(SP)=5AH

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

(2)(30H)=5BH

(3)R0=35H A=7FH 4BH=20H 40H=7FH

(4)

CY AC OV P OF RS1

1 1 0 1 0 1

五、程序填空(10分)

1._#20H_ __R1___ _LOOP____

2.__41H___ __R0___

3.__40H___ _#0AH____ __A___

4._#40H____ __#0FH___

四、分析程序并写出结果:(共4题,每题5分)

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

MOV A , R2

ADD A , 20H

MOV PSW , #80H

SUBB A , P0

XRL A , #45H

MOV 40H , A

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

MOV A , @R0

MOV R0 , A

MOV A , @R0

ADD A , 21H

ORL A , #21H

RL A

MOV R2 , A

RET

则执行结束(R0)= (R2)=

3. 执行下面一段程序;

MOV SP, #60H

MOV A, #10H

MOV B, #01H

PUSH A

PUSH B

POP A

POP B

A , B的内容是:(A)= (B)=

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

MOV A, 31H

ANL A, #0FH

MOV 41H, A

MOV A, 31H

ANL A, #0F0H

SW AP A

MOV 42H, A

则(41H)= (42H)=

1.(20H)←11H

(A)←20H

(A)←(A)+(20)

(CY)=1

(A)-(P0)-(CY)→(A)即(A)←00H

(A)+45H→(A)即(A)←45H

(40H)←45H

2.(A)←((R0))(A)=36H

(R0)←(A)(R0)←36H

(A)←((R0))(A)←34H

(A)←(A)+(21H)34H+17H=4BH

(A)←(A)21H 4BH 21H=6BH

(A)←D6H

(R2)←D6H

(R0)=36H (R2)=D6H

3.(A)=01H (B)=10H

4. (41H)=03H (42H)=02H

有一长度为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

1.执行下列程序段后,(P1)=_______。9BH

MOV P1,#5DH

CPL P1.1

CPL P1.2

CLR P1.6

SETB P1.7

1、设(A)=38H,R0=28H,(28H)=18H,执行下列程序后,(A)= 0E7H

ORL A,#27H

ANL A,28H

XCHD A,@R0

CPL A

2、设(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

2.执行下列程序段后,(A)=_______,(C Y)=____。(A)=8BH(或10001011B) (CY)=不影响

MOV A,#C5H

RL A

3.下列程序段执行后,(R0)=_______,(7EH)=____,(7FH)=_______。

MOV R0,#7EH

MOV 7EH,#0FFH

MOV 7FH,#40H

1NC @R0

1NC R0

1NC @R0 (R0)=7FH (7EH)=00H (7FH)=41H

4.已知(SP)=60H,子程序SUBTRN的首地址为0345H,现执行位于0123H的ACALL SUBTRN双字节指令后,

(PC)=___,(61H)=_______,(62H)= ____。

. (PC)=0345H (61H)=25H (62H)=01H

5.阅读下列程序,说明其功能。(data)×10操作

MOV R0,#data

MOV A,@R0

RL A

MOV R1,A

RL A

RL A

ADD A,R1

MOV @R0,A

RET

二、分析程序并写出结果:(每小题5分,共20分)

1.已知(R0)=20H, (20H ) =10H, (P0) =30H, (R2) =20H, 执行如下程序段后

MOV @R0 , #11H

MOV A , R2

ADD A , 20H

MOV PSW , #80H ;含义?

SUBB A , P0

MOV 40H , A

结果是:( 40H ) =

(20H)←11H

(A)←20H

(A)←(A)+(20)

(CY)=1

(A)-(P0)-(CY)→(A)即(A)←00H

(A)+45H→(A)即(A)←45H

(40H)←45H

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

MOV A , @R0

MOV R0 , A

MOV A , @R0

ADD A , 21H

ANL A , #21H ;与

RL A ;左移

MOV R2 , A

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

说明下列伪操作的作用

ORG 2000H (定义地址起点为2000H)

LIMIT EQU 200 (LIMIT等值于200)

HBD2 EQU HBDTW (HBD2等值于HBDTW)

JATB:DW 2200H (定义字,标号JATB处连续存放两个字节:00 22 )

2)经过汇编后,以下各条语句的标号应取什么值?

ORG 2800H

TABLE:DS 0EH (2800H~280EH保留)

WORD:DB ‘WORKER’,15,0A (280FH: 57H 4FH 52H 4BH 45H 52H 15H 0AH )

FANG EQU 100H (伪指令不占内存)

ONE EQU 3400H (伪指令不占内存)

BEGIN:LD A,R0 (程序开始的地址:2817H)

3)说明执行如下指令后,寄存器A、中的内容。

MOV A,#78H

SWAP A

ANL A,#0FH (A=07H)

1说明下列程序的功能

①CLR A

MOV R0,#30H

LOOP0:CJNE @R0,#00H,LOOP1

INC A

LOOP1:INC R0

CJNE R0,#3FH,LOOP0

HERE:SJMP HERE

结果A中的内容是什么?(是30H~3EH中0的个数)

②MOV SP,#30H

PUSH 50H

POP 40H

该程序起什么作用?(将50H单元的内容传送到40H单元)

③设A的内容为BCD码68H,执行下列指令:

A中结果是什么?

ADD A,#09H ;A中内容=(77H)还是(71H)

DA A

1、内部RAM数据及P1口数据如下图所示,试分析下段指令执行后的结果。

MOV A,#03H;A= 03H

SWAP A;A= 30H

MOV R0,A;A= 30H ;R0= 30H

MOV A,@R0;A= 50H

ANL A,#F0H;A= 50H

MOV R1,A;R1= 50H

MOV B,@R1;B= 10H

MOV @R1,P1;R1= 50H ;(50H)= E6H

MOV P2,P1;P2= E6H

CPL P1.4; P1= F6H ORL C ,P1.4; C= 1 上段指令执行后:(10H )= 00H ;(30H )= 50H ;(50H )= E6H ; P1= F6H ; P2= E6H 。

3、简述80C51的寻址方式?各涉及哪些存储器空间?

答:立即数寻址:程序存储器ROM 。

直接寻址:片内RAM 低128B 和特殊功能寄存器。 寄存器寻址:R0~R7,A ,B ,C ,DPTR

寄存器间接寻址:片内RAM 低128B ,片外RAM 。 变址寻址:程序存储器64KB 。

相对寻址:程序存储器256B 范围。

位寻址:片内RAM 的20H ~2FH 字节地址,部分特殊功能寄存器。

4、简述程序状态字寄存器PSW 中各位的含义。

答:程序状态字寄存器PSW :程序状态字寄存器PSW :是一个8位寄存器,用来存放当前指令执行后操作结果的某些特征,以便为下一条指令的执行提供依据。定义格式如下。其中,CY :进借位标志;AC :辅助进借位标志; F0:软件标志;OV :溢出标志;F1:用户标志位; P :奇偶校验标志;RS1、RS0:工作寄存器组选择(如表所示)。

5、简述单片机系统扩展的基本原则和实现方法。

答:(1)以P0口线作地址/数据总线

P0口作系统的低8位地址线。在实际应用时,先把低8位地址送锁存锁存器暂存,然后再由地址锁存器给系统提供低8位地址,而把P0口作为数据线使用。

(2)以P2口线作高位地址总线

在实际应用中,高位地址线并不固定为8位,需要几位就从P2口中引出几条口线。 (3)控制信号线

①使用ALE 作用地址锁存的选通信号,以实现低8位地址的锁存; ②以信号作为扩展程序存储器的读选通信号; ③以信号作为内、外程序存储器的选择信号;

④以和作为扩展数据存储器和I/O 端口的读/写选通信号。执行MOVX 指令时,这两个信号分别自动有效。

3、符号函数1(00(01(0x y x x >??

==??-

当时)当时)当时),设变量X 存于V AR 单元中,函数值y 存于FUNC 单元中,要求编写按上述函

数式给y 赋值得程序。 解:ORG 1000H V AR : DATA 30H FUNC :DA TA 31H

MOV A ,V AR JZ COMP

JNB ACC.7,POSI MOV A ,#0FFH SJMP COMP POSI: MOV A ,#1 COMP: MOV FUNC ,

A

SJMP $

单片机分析程序

四、分析程序并填空() 1.执行下列程序段后,(P1)=___9BH____。 MOV P1,#5DH CPL P1.1 CPL P1.2 CLR P1.6 SETB P1.7 2.执行下列程序段后,(A)=__8BH_____,(C Y)=__不影响__。 MOV A,#C5H RL A 3.下列程序段执行后,(R0)=___7FH____,(7EH)=__00H__,(7FH)=_41H______。 MOV R0,#7EH MOV 7EH,#0FFH MOV 7FH,#40H INC @R0 INC R0 INC @R0 4.已知(SP)=60H,子程序SUBTRN的首地址为0345H,现执行位于0123H的ACALL SUBTRN双字节指令后,(PC)=__0345H_,(61H)=___25H____,(62H)= __01H__。 5.阅读下列程序,说明其功能。 MOV R0,#data MOV A,@R0 RL A MOV R1,A RL A RL A ADD A,R1 MOV @R0,A RET ; (data)×10操作 6.改错 1.MUL RoRl 乘法指令应使用A、B寄存器操作 2.MOV A,@R7 间接寄存器使用R7有误,间址寄存器只能使用R0、R1 3.MOV A,#3000H 8位累加器A不能接受16位数据 4.MOVC @A+DPTR,A MOVC指令为对程序存储区操作指令,累加器的内容不可通过变址方式送入程序存储器,两操作数写反了。 5.UMP #1000H 长转移指令中的操作数为16位转移地址,不能用立即数的形式来表达。 7. 说明MCS—51单片机的下列各条指令中源操作数的寻址方式(可直接在每条指令后面书写) 1.ANL A,20H 直接寻址 2.ADDC A,#20H 立即寻址

51单片机常用子程序汇总

目录 1、通过串口连续发送n个字节的数据 /*************************************************************** 模块功能:通过串口连续发送n个字节的数据 参数说明: s:待发送数据的首地址 n:要发送数据的字节数 ***************************************************************/ void SendD(unsigned char *s,unsigned char n) { unsigned char unX; if(n>0) { ES=0; // 关闭串口中断 for(unX=0;unX #include #define Nop() _nop_() //空指令

sbit SDA=P1^3; sbit SCL=P1^2; bit ACK; void Start_I2c() { SDA=1; Nop(); SCL=1; Nop(); Nop(); Nop(); Nop(); Nop(); SDA=0; Nop(); Nop(); Nop(); Nop(); Nop(); SCL=0; //钳住I2C总线,准备发送或接受数据Nop(); Nop(); } (2)结束总线函数 /*************************************************************** 模块功能:发送I2C总线结束条件 ***************************************************************/ void Stop_I2c() { SDA=0; Nop(); SCL=1; Nop(); Nop(); Nop(); Nop(); Nop(); SDA=1; Nop(); Nop(); Nop(); Nop();

单片机程序分析题练习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单片机考试常见试题

一、填空题 1.单片机是把中央处理器、存储器、定时器/计数器以及I/O接口电路等主要计算机部件集成在一块集成电路芯片上的微型计算机。 2.除了单片机这一名称之外,单片机还可称为微控制器、嵌入式控制器。 3.计算机的系统总线有地址总线、控制总线和数据总线。 4.80C51单片机基本型内部RAM有 128 个字节单元,这些单元可以分为三个用途不同的区域,一是工作寄存器区、二是位寻址区、三是数据缓冲区。5.8051单片机有2 个16位定时/计数器。 6.单片机存储器的主要功能是存储程序和数据。80C51含4 KB掩膜ROM。7.80C51在物理上有4个独立的存储器空间。 8.通常、单片机上电复位时PC= 0000H,SP= 07H;而工作寄存器则缺省采用第00 组,这组寄存器的地址范围是从00H~ 07H。 9.8051的堆栈是向地址的高端生成的。入栈时SP先加1,再压入数据。10.使用8031芯片时,需将/EA引脚接低电平,因为其片内无程序存储器。11.MCS-51特殊功能寄存器只能采用直接寻址方式。 12.汇编语言中可以使用伪指令,它们不是真正的指令,只是用来对汇编过程进行某种控制。 13.半导体存储器的最重要的两个指标是存储容量和存储速度。 14.当PSW4=1,PSW3=0时,工作寄存器Rn,工作在第2组。 15.在8051单片机中,由 2 个振荡(晶振)周期组成1个状态(时钟)周期,由 6个状态周期组成1个机器周期。 16.假定累加器A的内容30H,执行指令:1000H:MOVC A,@A+PC后,把程序存储器1031H单元的内容送累加器A中。 17.MCS-51单片机访问外部存储器时,利用ALE信号锁存来自P0口的低8位地址信号。 18.内部RAM中,位地址为30H的位,该位所在字节的字节地址为26H。 19.若A中的内容为63H,那么,P标志位的值为0。 20.在基址加变址寻址方式中,以累加器A作变址寄存器,以DPTR或PC作基址寄存器。 21.指令格式是由操作码和操作数所组成,也可能仅由操作码组成。 22.通过堆栈操作实现子程序调用,首先就要把PC的内容入栈,以进行断点保护。调用返回时,再进行出栈保护,把保护的断点送回到PC。 23.MCS-51单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为MCS-51的PC是16位的,因此其寻址的范围为64KB。 24.在寄存器间接寻址方式中,其“间接”体现在指令中寄存器的内容不是操作数,而是操作数的地址。 25.假定累加器A中的内容为30H,执行指令1000H:MOVC A,@A+PC 后,把程序存储器1031H单元的内容送入累加器A中。 26.12根地址线可寻址4 KB存储单元。 27.:假定A=55H,R3=0AAH,在执行指令ANL A,R3后,A=00H,R3=0AAH。28.MCS-51的P0口作为输出端口时,每位能驱动8个LSTTL负载。 29.MCS-51有4个并行I/O口,其中P1~P3是准双向口,所以由输出转输入时必须先写入“1”。 30.MCS-51的堆栈是软件填写堆栈指针临时在片内数据存储器内开辟的区域。

单片机程序分析题练习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 中的结果是什么设

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

六、设计题 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

单片机的各种程序

单片机的各种程序 1. 八个灯循环点亮 ORG 0030H START:MOV SP,#5FH MOV R2,#08H MOV A,#0FEH NEXT:MOV P1,A ACALL DELAY RL A DJNZ R2,NEXT MOV R2,#08H MOV A,#7FH NEXT1:MOV P1,A ACALL DELAY RR A DJNZ R2,NEXT1 SJMP START DELAY:MOV R3,#0FFH DEL1:MOV R4,#0FFH DJNZ R4,$ DJNZ R3,DEL1 RET END 2. 查表的例子 org 0000h start: mov dptr,#ledtab movc a,@a+dptr mov p0,a sjmp start ledtab: db:0c0h,0f9h,04h,0b0h,99h,92h,82h,0f8h,80h end https://www.wendangku.net/doc/257630446.html, 0000H MOV A,#0FEH SHIFT: LCALL FLASH

RL A SJMP SHIFT FLASH: MOV R2,0AH FLASH1:MOV P1,A LCALL DELAY MOV P1,#0FFH LCALL DELAY DJNZ R2,FLASH1 RET DELAY:MOV R5,#200 D1:MOV R6,#123 NOP DJNZ R6,$ DJNZ R5,D1 RET 4.数码显示管显示2015循环 org 0000h start: loop: mov p1,#0c0h lcall DELAY mov p1,#0f9h lcall DELAY mov p1,#0a4h lcall DELAY mov p1,#0b0h lcall DELAY mov p1,#99h lcall DELAY mov p1,#92h lcall DELAY mov p1,#82h lcall DELAY mov p1,#0f8h lcall DELAY mov p1,#80h lcall DELAY

怎样分析单片机程序

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 科技情报开发与经济 SCI-TECHINFORMATIONDEVELOPMENT&ECONOMY2006年第16卷第3期 TheApplicationoftheDiversityReceptionTechnique inSDHDigitalMicrowaveTransmissionSystem LIUWei-dong ABSTRACT:Thediversityreceptiontechniqueplaysanimportantroleinthelarge-capacitydigitalmicrowavetransmission.Thispaperexpoundstheconcepts,featuresandimplementationschemesofseveralkindsofthediversityreceptiontechniques,anddemonstratestheprospectofthecombinationofvariousdiversityreceptiontechniques.KEYWORDS:diversityreceptiontechnique;digitalmicrowavetransmission;selectivefading 设计单片机程序不是从零开始,而是先对已有的相关程序进行阅读分析。分析程序是设计、修改、优化、维护的重要步骤。因此,掌握单片机程序的分析方法是非常必要的。 1详细阅读设备使用说明书 可投产(使用)的单片机系统都附有使用说明书(手册),它介绍了该 产品的 (工作原理)技术指标、使用步骤、操作方法和注意事项,同时还有系统的有关状态、显示、报警等信息。这为阅读程序、划分模块分析功能提供了极大的帮助。若有该系统,应对其反复操作,熟悉使用步骤和操作方法。操作时应全面详细,确保程序和外围电路的每一部分都执行过。 2了解单片机芯片型号及功能 目前,具有代表性的单片计算机有:8位单片机,即51系列;16位单 片机,即96系列;32位嵌入式微处理器,即X86结构的i386EX系列;超低功耗i486系列和RISC结构的i960系列等。由于MCS—51系列单片机具有集成度高,处理功能强,可靠性好,价格低廉等优点,它在智能仪器仪表、控制工程、测试技术等领域得到了广泛的应用。繁多的单片机品种,使阅读者必须首先知道该电路中具体使用了哪一种单片机芯片,弄清其引脚功能、存储器结构、指令系统等。 3分析掌握外围电路各部分的作用 在单片机应用系统中,硬件是基础,软件的功能是对硬件进行合理 调配和使用。在控制系统的开发中,软件和硬件设计基本上是同步进行的。 3.1单片机常用的外围电路 单片机常用的外围电路包括程序扩展电路、内存扩展电路、并行口 扩展电路、Watchdog电路、串行通讯电平转换电路、LED(LCD)数码显示电路、键盘电路、A/D转换电路、D/A转化电路、指示灯电路等,同时还必须明确该电路的实现方式。单片机外围电路简图见图1。 3.2其他电路及连线 为了阻抗匹配,增设驱动电路,驱动大电流电路时采用的光电隔离 电路,CMOS电路多余输入端的处理(接正电源或接地),地线系统(系统地,机壳地或屏蔽地,数字地,模拟地)的安排,信号线包括读、写信号线、片选信号线、时钟信号线、读选通信号(PSEN)、地址锁存信号(ALE)、复位信号等的连接及I/O地址的分配,掌握这些对程序的阅读至关重要。 4 阅读分析程序 4.1 单片机程序所用语言 由于汇编语言精炼高效,小型的单片机程序常采用汇编语言。而C 语言既有高级语言的各种特点,又可对硬件进行操作,进行结构化程序设计。对MCS—51单片机,目前采用比较多的有ASM51,C51等。此外,还有汇编语言与BASIC语言混编的单片机程序。 4.2单片机程序的基本结构与组成 在整个单片机程序中初始化、自检部分安排在单片机程序的开始, 随后便是主(监控)程序,各模块和子程序,此外还有字形表及数据表等。 4.2.1传统的程序结构 单片机程序一般采用模块化设计。其中心思想是将一个功能较多、 程序量较大的程序整体按其功能划分成若干个相对独立的程序段。通常把控制单片机应用系统工作的整个程序称为监控程序。监控程序按模块分为监控主程序和命令处理子程序。命令处理子程序完成各种命令所规定的具体操作,它按各种命令再分为不同的子程序模块。它的编程方法与功能要求与系统硬件密切相关,没有通用的方法。而监控主程序是接受和分析来自键盘的命令,进而把控制转到相应的处理子程序的入口,起引导作用。 文章编号:1005-6033(2006)03-0227-02 收稿日期:2005-09-22 怎样分析单片机程序 张世生 (山东师范大学传播学院,山东济南,250014) 摘 要:分析单片机程序是为编写程序做准备,包括对硬件电路和软件功能的分析,提 出了实用的分析方法,并总结出分析程序的一般步骤和应注意的问题。关键词:单片机;程序结构;算法分析中图分类号:TP368.1 文献标识码: A 227

51单片机C语言程序设计经典案例

项目三 C51程序设计语言基础 任务1 C51程序的识读 1.C51程序结构 例3-1 P_test /********************* ,标准的MCS-51单片机头文件为””,STC89系列单片机头文件为””

4.C51的常量和变量 1)常量 常量就是在程序运行过程中,其值不能改变的数据,包括整型常量、字符常量、字符串常量、实数常量、位标量等。 (1)整型常量:可以用二进制、八进制、十进制、十六进制表示。 无符号整数常量在一个数字后面加上“u”或“U”表示。长整数型常量在后面加上“l”或“L”,无符号长整数型常量在数字后面加上“ul”或“UL”,实数型常量在后面加“f”或“F”。 (2)字符常量:单引号内的字符,不可以显示的控制字符在前加“\”组成专用转义字符。(3)字符串常量:双引号内的字符,当双引号内没有字符时是空字符串。在C语言中,字

符串常量是作为字符类型数组来处理的,在存储字符串时,系统在字符串尾部加上转义字符“\o”,作为该字符串的结束符。 (4)实数常量:有十进制和指数两种表示形式。指数表示的实数为“[±]数字[.数字]e[±]数字”,[ ]中的内容为可选项 (5)位标量:位标量的值是一个二进制数。 2)变量 变量就是在程序运行过程中,其值可以被改变的数据。必须先用标识符作为变量名,并指出所用的数据类型和存储模式,这样编译系统才能为变量分配相应的存储空间。定义变量的格式: [ < 存储模式 > ] < 类型定义 > [ 存储器类型 ] < 标识符 >; 类型定义和标识符是必要的。存储模式有四种,自动(auto)、外部(extern)、静态(static)和寄存器(register),默认类型为自动(auto)。 表3-3 C51存储类型与MCS-51单片机存储空间的对应关系及其大小 如果在变量定义时省略了存储类型标识符,则编译器会自动选择默认的存储类型。默认的存

最经典的51单片机经典流水灯汇编程序

单片机流水灯汇编程序设计 开发板上的8只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。 程序A: ;用最直接的方式实现流水灯 ORG 0000H START:MOV P1,#01111111B ;最下面的LED点亮 LCALL DELAY;延时1秒 MOV P1,#10111111B ;最下面第二个的LED点亮 LCALL DELAY;延时1秒 MOV P1,#11011111B ;最下面第三个的LED点亮(以下省略) LCALL DELAY MOV P1,#11101111B LCALL DELAY MOV P1,#11110111B LCALL DELAY MOV P1,#11111011B LCALL DELAY MOV P1,#11111101B LCALL DELAY MOV P1,#11111110B LCALL DELAY MOV P1,#11111111B ;完成第一次循环点亮,延时约0.25秒 AJMP START ;反复循环 ;延时子程序,12M晶振延时约250毫秒 DELAY: MOV R4,#2 L3: MOV R2 ,#250 L1: MOV R3 ,#250 L2: DJNZ R3 ,L2 DJNZ R2 ,L1 DJNZ R4 ,L3 RET END 程序B: ;用移位方式实现流水灯

ajmp main ;跳转到主程序 org 0030h ;主程序起始地址 main: mov a,#0feh ;给A赋值成11111110 loop: mov p1,a ;将A送到P1口,发光二极管低电平点亮 lcall delay ;调用延时子程序 rl a ;累加器A循环左移一位 ajmp loop ;重新送P1显示 delay: mov r3,#20 ;最外层循环二十次 d1: mov r4,#80 ;次外层循环八十次 d2: mov r5,#250 ;最内层循环250次 djnz r5,$ ;总共延时2us*250*80*20=0.8S djnz r4,d2 djnz r3,d1 ret end 51单片机经典流水灯程序,在51单片机的P2口接上8个发光二极管,产生流水灯的移动效果。 ORG 0 ;程序从0地址开始 START: MOV A,#0FEH ;让ACC的内容为11111110 LOOP: MOV P2,A ;让P2口输出ACC的内容 RR A ;让ACC的内容左移 CALL DELAY ;调用延时子程序 LJMP LOOP ;跳到LOOP处执行 ;0.1秒延时子程序(12MHz晶振)=================== DELAY: MOV R7,#200 ;R7寄存器加载200次数 D1: MOV R6,#250 ;R6寄存器加载250次数 DJNZ R6,$ ;本行执行R6次 DJNZ R7,D1 ;D1循环执行R7次 RET ;返回主程序

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的好处在于程序占用的资源数据符号或寄存器符号用占用源的英文或英文缩写字符名称来定义,后续编程中凡是出现该数据符号或寄存器符号就用该字符名称代替,这样,采用有意义的字符名称进行编程,更容易记忆和不容易混淆,也便于阅读。

51单片机考试常见试题简答 题

简答题部分 1、什么叫堆栈? 答:堆栈是在片内RAM中专门开辟出来的一个区域,数据的存取是以"后进先出"的结构方式处理的。实质上,堆栈就是一个按照"后进先出"原则组织的一段内存区域。 2、进位和溢出? 答:两数运算的结果若没有超出字长的表示范围,则由此产生的进位是自然进位;若两数的运算结果超出了字长的表示范围(即结果不合理),则称为溢出。 3、在单片机中,片内ROM的配置有几种形式?各有什么特点? 答:单片机片内程序存储器的配置形式主要有以下几种形式:(1)掩膜(Msak)ROM型单片机:内部具有工厂掩膜编程的ROM,ROM中的程序只能由单片机制造厂家用掩膜工艺固 化,用户不能修改ROM中的程序。掩膜ROM单片机适合于 大批量生产的产品。用户可委托芯片生产厂家采用掩膜方法 将程序制作在芯片的ROM。 (2)EPROM型单片机:内部具有紫外线可擦除电可编程的只读存储器,用户可以自行将程序写入到芯片内部的EPROM 中,也可以将EPROM中的信息全部擦除。擦去信息的芯片 还可以再次写入新的程序,允许反复改写。 (3)无ROM型单片机:内部没有程序存储器,它必须连接程序存储器才能组成完整的应用系统。 无ROM型单片机价格低廉,用户可根据程序的大小来选择外接 程序存储器的容量。这种单片机扩展灵活,但系统结构较复 杂。 (4)E2ROM型单片机:内部具有电可擦除叫可编程的程序存储器,使用更为方便。该类型目前比较常用 (5) OTP(One Time Programmable)ROM单片机:内部具有一次可编程的程序存储器,用户可以在编程器上将程序写入片 内程序存储器中,程序写入后不能再改写。这种芯片的价 格也较低。 4、什么是单片机的机器周期、状态周期、振荡周期和指令周期?它们之间是什么关系? 答:某条指令的执行周期由若干个机器周期(简称M周期)构成,一个机器周期包含6个状态周期(又称时钟周期,简称S周期),而一个状态周期又包含两个振荡周期(P1和P2,简称P周期)。也就是说,指令执行周期有长有短,但一个机器周期恒等于6个状态周期或12个振荡周

单片机程序分析

有一长度为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单片机基础知识及期末复习

51单片机简答题部分(经典) 1、什么叫堆栈? 答:堆栈是在片内RAM中专门开辟出来的一个区域,数据的存取是以"后进先出"的结构方式处理的。实质上,堆栈就是一个按照"后进先出"原则组织的一段内存区域。 2、进位和溢出? 答:两数运算的结果若没有超出字长的表示范围,则由此产生的进位是自然进位;若两数的运算结果超出了字长的表示范围(即结果不合理),则称为溢出。 3、在单片机中,片内ROM的配置有几种形式?各有什么特点? 答:单片机片内程序存储器的配置形式主要有以下几种形式:(1)掩膜(Msak)ROM型单片机:内部具有工厂掩膜编程的ROM,ROM中的程序只能由单片机制造厂家用掩膜工艺固 化,用户不能修改ROM中的程序。掩膜ROM单片机适合于 大批量生产的产品。用户可委托芯片生产厂家采用掩膜方法 将程序制作在芯片的ROM。 (2)EPROM型单片机:内部具有紫外线可擦除电可编程的只读存储器,用户可以自行将程序写入到芯片内部的EPROM 中,也可以将EPROM中的信息全部擦除。擦去信息的芯片 还可以再次写入新的程序,允许反复改写。 (3)无ROM型单片机:内部没有程序存储器,它必须连接程序存储器才能组成完整的应用系统。 无ROM型单片机价格低廉,用户可根据程序的大小来选择外接 程序存储器的容量。这种单片机扩展灵活,但系统结构较复 杂。 (4)E2ROM型单片机:内部具有电可擦除叫可编程的程序存储器,使用更为方便。该类型目前比较常用 (5)OTP(One Time Programmable)ROM单片机:内部具有一次可编程的程序存储器,用户可以在编程器上将程序写入片内程 序存储器中,程序写入后不能再改写。这种芯片的价格也较 低。 4、什么是单片机的机器周期、状态周期、振荡周期和指令周期?它们之间是什么关系? 答:某条指令的执行周期由若干个机器周期(简称M周期)构成,一个机器周期包含6个状态周期(又称时钟周期,简称S周期),而一个状态周期又包含两个振荡周期(P1和P2,简称P周期)。也就是说,指令执行周期有长有短,但一个机器周期恒等于6个状态周期或12个振荡周

基于51单片机的音乐程序

基于51单片机的按键切换播放音乐 原理图: 引脚说明:共5个按键,分别接51单片机的P0~P4引脚,前4个按键控制播放设置好的四首音乐,第5个按键用来关闭音乐。按键采用中断方式,任意时刻按下任意按键则立即进入所按按键的功能;蜂鸣器接单片机的P3.6口。 仿真说明:使用proteus仿真,晶振:12MHZ。 程序代码如下: /*12Mhz晶振工作*/ #include #define uint unsigned int #define uchar unsigned char sbit voice=P3^6; uchar code sound1[]={0xff, 0x40,0x80,0x30,0x40,0x2b,0x40,0x26,0x80,0x24,0x10,0x26,0x40,0x30,0x40, 0x2b,0x80,0x30,0x40,0x39,0x40,0x30,0xc0,0x40,0x80,0x30,0x40,0x2b,0x40, 0x26,0x40,0x26,0x20,0x24,0x20,0x20,0x40,0x30,0x40,0x24,0x80,0x26,0x10,

0x20,0x40,0x19,0x40,0x19,0x80,0x1c,0x10,0x1c,0x80,0x20,0x40,0x20,0x20, 0x1c,0x20,0x19,0x40,0x1c,0x20,0x20,0x20,0x26,0xc0,0x24,0x80,0x24,0x10, 0x20,0x40,0x1c,0x40,0x20,0x40,0x24,0x20,0x26,0x20,0x2b,0x80,0x33,0x40, 0x33,0x20,0x39,0x20,0x40,0x40,0x39,0x40,0x30,0xc0,0x18,0x80,0x1c,0x80, 0x24,0x80,0x20,0x10,0x1c,0x80,0x19,0x40,0x19,0x20,0x19,0x20,0x19,0x40, 0x1c,0x20,0x20,0x20,0x26,0xc0,0x18,0x80,0x1c,0x80,0x24,0x80,0x20,0x10, 0x1c,0x80,0x1c,0x40,0x1c,0x20,0x1c,0x20,0x1c,0x40,0x24,0x20,0x26,0x20, 0xff,0x20,0x00};//同一首歌*/ uchar code sound2[]={0xff, 0x18,0x40,0x1c,0x20,0x18,0x20,0x13,0x40,0x13,0x20,0x15,0x20,0x13,0x20, 0x15,0x20,0x13,0x20,0x15,0x20,0x18,0x20,0x19,0x20,0x1c,0x20,0x20,0x20, 0x1c,0x40,0x19,0x20,0x18,0x20,0x15,0x40,0x10,0x80, 0x13,0x10,0x10,0x40,0x15,0x10,0x13,0x10,0x18,0x10,0x1c,0x10,0x26,0x10, 0x13,0x10,0x18,0x10,0x1c,0x10,0x26,0x10,0x13,0x10,0x18,0x10,0x1c,0x10, 0x26,0x10,0x13,0x10,0x18,0x10,0x1c,0x10,0x26,0x10,0x15,0x10,0x19,0x10, 0x20,0x10,0x2b,0x10,0x15,0x10,0x19,0x10,0x20,0x10,0x2b,0x10,0x15,0x10, 0x19,0x10,0x20,0x10,0x2b,0x10,0x15,0x10,0x19,0x10,0x20,0x10,0x2b,0x10, 0x18,0x10,0x1c,0x10,0x24,0x10,0x30,0x10,0x18,0x10,0x1c,0x10,0x24,0x10, 0x30,0x10,0x19,0x10,0x20,0x10,0x2b,0x10,0x19,0x10,0x19,0x10,0x20,0x10, 0x2b,0x10,0x19,0x10,0x18,0xc0,0xff,0x40,0x40,0x10,0x39,0x20,0x30,0x20, 0x2b,0x20,0x30,0x20,0x2b,0x20,0x26,0x20,0x26,0x20,0x26,0x20,0x26,0x20, 0x26,0x20,0x2b,0x20,0x30,0x20,0x2b,0x20,0x26,0x20,0x26,0x20,0x26,0x20, 0x26,0x20,0x26,0x20,0x2b,0x20,0x30,0x20,0x2b,0x40,0x30,0x10,0x30,0x20, 0x39,0x20,0x30,0x40,0x2b,0x10,0x2b,0x20,0x26,0x20,0x26,0x80,0x40,0x10, 0x39,0x20,0x30,0x20,0x2b,0x20,0x30,0x20,0x2b,0x20,0x30,0x20,0x30,0x20, 0x20,0x20,0x20,0x20,0x26,0x20,0x2b,0x20,0x26,0x20,0x2b,0x20,0x30,0x20, 0x30,0x20,0x26,0x20,0x26,0x20,0x26,0x20,0x2b,0x20,0x30,0x20,0x2b,0x40, 0x2b,0x10,0x2b,0x20,0x2b,0x20,0x2b,0x40,0x30,0x10,0x30,0x20,0x39,0x20,

51单片机常见汇编程序实验代码

1. 将片外8000H-80FFH单元写入数据AB (1) 2. 将片内RAM20H单元中数据在数码管 上显示出来 (1) 3. 将片内ARM30H-40H单元清零 (2) 4. 将六位数显示在数码管上 (2) 5. 8255并口芯片的应用:交通灯控制系统 的设计 (3) 6. 将交通灯点亮 (3) 7. AD转换实验 (4) 8. DA转换实验 (5) 9. 定时器的应用 (5) 10. 开关控制LED的亮灭及速度 (6) 11. 计数器实验 (6) 12. 串并转换实验 (7) 13. 直流电机速度检测 (7) 14. 8255PB外接8个开关,编程将开关状 态显示在数码管上(串并转换动态扫描方式) (8) 15. P3.4接开关K,编程将开关拨动次数, 通过串并转换的方式进行显示 (9) 16. 比较片内RAM30H、31H两个单元值 的大小,将较大的数显示在数码管上· 10 17. 单片机P1口接8个开关,编程将开关 状态显示在数码管上(串并转换动态扫描 方式) (10) 18. 将片内50H单元的值显示在数码管上11 19. 开关K1接P1.0,K2接P1.1,编程实 现当按下K1时在数码管上显示50H单元 的值,按下K2在数码管上显示51H单元 的值 (12) 1. 将片外8000H-80FFH单元写入数据AB ORG 0000H ;程序从0000H开始执行 AJMP MAIN ;跳转到主程序 ORG 0030H ;以免覆盖中断地址 MAIN: MOV SP,#60H; 避免堆栈和工作寄存 器区冲突 MOV DPTR,#8000H MOV R0,#0 LOOP: MOV A,#0ABH MOVX @DPTR,A INC DPTR INC R0 CJNE R0,#0,LOOP ; 判断 AJMP $; 等待 END ;调试-视图-M存储器(输入地址X:8000H) 2. 将片内RAM20H单元中数据在数码管上显示 出来 ORG 0000H ;程序从0000H开始执行 AJMP MAIN ;跳转到主程序 ORG 0030H ;以免覆盖中断地址 MAIN: MOV SP,#60H ;避免堆栈和工作寄存器区冲突 MOV DPTR,#0E100H ;指向命令口地址 MOV A,#03H ;PA、PB口输出 MOVX @DPTR,A ;所有并口显示程序先进行8155初始化 MOV 20H,#34H MOV A,20H ACALL CHAI LOOP: MOV R0,#10H ;第一个显示数的地址送R0 MOV R1,#2 ;显示2个数 MOV R2,#1 ;从倒数第一个数码管开始显示 ACALL DISPLAY LJMP LOOP ;判断 CHAI: MOV B,#10H DIV AB MOV 10H,B MOV 11H,A RET DISPLAY: MOV A,@R0 MOV 0FH,#8 ACALL P164 ACALL PBIT ACALL DELAY MOV A,#0 MOVX @DPTR,A INC R0 DJNZ R1,DISPLAY

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