(完整版)单片机原理及应用——基于Proteus和Keil_C 林立_张俊亮毕业论文 联系客服

发布时间 : 星期四 文章(完整版)单片机原理及应用——基于Proteus和Keil_C 林立_张俊亮毕业论文更新完毕开始阅读

CONT: CJNE @R0,#0AAH,NEXT;比较查找值与指针所指单元的值,不相等转移

MOV

A,#0FFH

;相等,则准备好要赋的标志值0FFH ;转存到保存结果处 ;修改地址指针

SJMP DOWN

R0

NEXT: INC

CJNE R0,#42H,CONT ;若指针未越过终点,则继续 MOV

A,#00H 50H,A

;查找失败,则将00H存入结果标志单元 ;将比较结果标志存入50H单元 ;暂停

DOWN: MOV

SJMP $ END

程序2: 节

MOV

R0,#32H

;设地址指针初值

;比较查找值与指针所指单元的

MOV

R7,#16

;计数器赋初值,从20H到30H共16个字

CONT: CJNE @R0,#0AAH,NEXT 值,不相等转移

MOV

A,#0FFH

;相等,则准备好要赋的标志值0FFH ;转存到保存结果处 ;修改地址指针

;计数器减1,非0,则继续

;查找失败,则将00H存入结果标志单元 ;将比较结果标志存入50H单元 ;暂停

SJMP DOWN

R0

NEXT: INC

DJNZ R7,CONT MOV

A,#00H 50H,A

DOWN: MOV

SJMP $ END

5.查找20H~4FH单元中出现00H的次数,并将查找结果存入50H单元。

解:从20H到4FH共48个字节

MOV MOV

R7,#48 R0,#20H

;字节计数器赋初值 ;设地址指针初值

CONT: CJNE @R0,#00H,NEXT ;比较查找值与指针所指单元的值,不相等转移

INC

R6 R0

;相等,0的个数计数器加1 ;修改地址指针

;计数器减1,非0,则继续 ;保存O的个数计数值到50H单元 ;暂停

NEXT: INC

DJNZ R7,CONT MOV

50H,R6

SJMP $ END

END

6.已知A=83H,R0=17H,(17H)=34H,写出下列程序段执行之后的A中的内容。 ANL ORL XRL CPL

END

A,#17H 17H,A A

答:

ANL ORL

A,#17H 17H,A

;A=03H

;(17H)=0011 0100 ∨ 0000 0011=0011

0111 XRL CPL

;A= 0000 0011 ∨ 0011 0111 =0011 0100

;A=1100 1011

A

7.已知单片机的晶振频率为12MHz,分别设计延时为0.1s、1s的子程序。

答:已知单片机的晶振频率为12MHz,则机器周期为1us,延时子程序是通过执行指令序列中机器周期数来达到,如果要0.1s,即100ms,也就是100000us,所以需要机器周期数达到100000。要延时达到1S,可通过对延时为0.1秒的子程序调用10次来实现。 DELAY100MS: D1: D2: 100ms DELAY1S: LOOP:

MOV

R7,#10

;计数10次

1 99795+2 次则继续

MOV R6,#200 MOV R7,#250

NOP

;1个机器周期 ;1个机器周期

;1个机器周期

DJNZ R7,D2 DJNZ R6,D1 RET

;2个机器周期,3*251=753

;2个机器周期,(1+753+2)*132=99792 ;2个机器周期,1+99792+2=99795,约

ACALL DELAY100MS ;延时100ms子程序 DJNZ R7,LOOP

;未达到

10

10*(2+99795+2)

RET

;返回2+10*(2+99795+2)=997992

8.内部RAM从20H单元开始处有一数据块,以ODH为结束标志,试统计该数据块的长度,将该数据块送到外部数据存储器7E01H开始的单元,并将长度存入7E00H单元。

解:从20H的指针用R0,从外部RAM7E01开始的指针用DPTR,计数器用R7

MOV MOV MOV

R7,#0 R0,#20H

;字节计数器赋初值 ;设片内RAM地址指针初值

DPTR,#7E01H ;设片外RAM地址指针初值

;取片内RAM中的一个字节

CONT: MOV

MOVX @DPTR,A INC INC INC

R7 R0

;存入片外RAM指针所指单元 ;长度计数器加1 ;片内RAM地址指针加1 ;片外RAM地址指针加1

DPTR

CJNE A,#0DH,CONT ;未达到结束标志 MOV

A,R7

;取块计数长度值 ;保存 ;暂停

MOVX @DPTR,A SJMP $ END

9.内部RAM从DATA开始的区域中存放着10个单字节十进制数,求其累加和,并将结果存入SUM和SUM+1单元。

解:R7计数,R6保存累加和高8位,R0用作地址指针

ORG

0000H

LJMP MAIN ORG EQU

100H 30H 40H R7,#10

;字节计数器赋初值 ;设片内RAM地址指针初值 ;累加器清0 ;累加结果的高8位

SUM

DATAA EQU MAIN: MOV

MOV CLR MOV

R0,#DATAA A

R6,A A NEXT R6

CONT: ADD

DA JNC INC

;加RAM中的一个字节到ACC

;若无进位则不用管高8位 ;有进位,高8位加1