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

单片机程序题

单片机程序题
单片机程序题

3.14 已知M1和M2单元中存放有两个16位无符号数X1和X2(低8位在前,高8位在后)试写出X1+X2并把结果放在M1和M1+1单元(低8位在M1单元,高8位在M1+1单元)的程序。设两数之和不会超过16位。

程序如下:

ORG 0500H ;X1的起始地址送R0

MOV R0,#M1 ;X2的起始地址R1

MOV R1,#M2 ;A←X1的低8位

MOV A,@R0 ;A←X1低8位+X2低8位,形成Cy

ADD A ,@R1 ;和的低8位存M1

MOV @R0,A;修改地址指针R0

INC R0 ;修改地址指针R1

INC R1 ;A<--X1高8位

MOV A, @R0 ;A<--X1高8位+X2高8位+Cy

ADDC A,@R1 ;和的高8位存M1+1

MOV @R0,A;停机

SJMP $

END

3.19 已知两个8位无符号乘数分别放在30H和31H单元中,试编出令它们相乘并把积的低8位放入32H单元中、积的高8位放入33H单元的程序。

程序如下:

ORG 0100H

MOV R0 ,#30H ;R0<--第一个乘数地址

MOV A ,@R0 ;A<--第一个乘数

INC R0 ;修改乘数地址

MOV B,@R0 ;B<--第二个乘数

MUL AB ;A X B =BA

INC R0 ;修改目标单元地址

MOV @R0,A;积的低8位--.>32H

INC R0 ;修改目标单元地址

MOV @R0,B ;积的高8位--.>33H

SJMP $ ;停机

END

3.25 已知M1和M1+1单元中有一个16位的二进制数(M1中为低8位),请通过编程令其扩大二倍(设该数扩大后小于65536)。

程序如下:

ORG 1000H

CLR C ;Cy<--0

MOV R1 ,#M1 ;操作数低8位地址送R1

MOV A,@R1 ;A<--操作数低8位

RLC A;低8位操作数左移,低位补0

MOV @R1,A ;送回M1单元,Cy中为最高位

INC R1 ; R1指向M1+1单元

MOV A,@R1 ;A<--操作数高8位

RLC A;高8位操作数左移

MOV @R1 , A;送回M1+1单元

SJMP $ ;停机

END

3.26 在M1和M1+1单元中有两个BCD数,请通过编程将它们紧缩成一个字节并放入M1单元。

程序如下:

ORG 0001H

MOV R1,#M1 ;地址M1送R1

MOV A,@R1 ;A<--M1中BCD数

SW AP A, ;BCD1移入高4位

INC R1 ;修改地址指针R1

ORL A,@R1 ;BCD1和BCD2合并后送A

MOV M1,A ;送回M1单元

SJMP $ ;停机

END

3.31 已知:外部RAM中以DA TA1(DA T A1在0页内)为起始地址的数据块以零为结束标志。试通过编程将之传送到以DA TA2为起始地址的内部RAM区。

程序如下:

ORG 0500H

MOV R0,#DA T A1 ;外部RAM数据块起始地址送R0

MOV R1,#DA T A2 ;内部RAM数据块起始地址送R1

LOOP: MOVX A,@R0 ;外部RAM取数送A

JZ DONE ;若A=0,则转DONE

MOV @R1,A ;若A≠0,则给内部RAM送数

INC R0 ;修改外部RAM地址指针

INC R1 ;修改内部RAM地址指针

SJMP LOOP ;循环

DONE :SJMP $ ;结束

END

3.32 试编一程序令片内RAM中以DA T为起始地址的数据块中连续10个无符号数相加,并累加送到SUM单元。这里的累加和是不考虑进位的和,所以它们为二进制8位。

程序如下:

ORG 1000H

MOV R2,#0AH ;数据块长度送R2

MOV R0,#DA T ;数据块起始地址送R0

CLR A;累加器清零

LOOP:ADD A ,@R0 ;加一个数

INC R0 ;修改加数地址指针

DJNZ R2,LOOP ;若R2-1≠0,则LOOP

MOV SUM ,A ;存和

SJMP $ ;结束

END

3.35 试利用子程序技术编出令20H—2AH、30H—3EH和40H—4FH三个子域清零的程

序。

ORG 1000H

MOV SP,#70H ;令堆栈的栈底地址为70H

MOV R0,#20H ;第一清零区起始地址送R0

MOV R2,#0BH ;第一清零区起始地址送R2

ACALL ZERO ;给20H-2AH区清零

MOV R0,#30H ;第二清零区起始地址送R0

MOV R2,#0FH ;第二清零区单元数送R2

ACALL ZERO ;给40H-4FH单元清零

SJMP $ ;结束

ORG 1050H

ZERO:MOV @R0,#00H ;清零

INC R0 ;修改清零区指针

DJNZ R2,ZERO ;若R2-1≠0,则ZERO

RET ;返回

END

3.10 试编出把外部RAM的2050H单元中的内容相交换的程序。

程序如下:

ORG 0500H

MOV DPTR,#2050H

MOVX A,@DPTR ;A<--(2050H)=X

MOV R0,A;存入R0

MOV DPTR,#2060H

MOVX A,@DPTR ;A<--(2060H)=Y

XCH A,R0 ;A?R0

MOVX @DPTR,A ;2060H<--X

MOV A,R0 ;A<--Y

MOV DPTR ,#2050H

MOVX @DPTR,A ;2050H<--Y

SJMP $

END

4..2 请编写能把20H单元内两个BCD数变换成相应的ASCII码并放在21H(高位BCD 数的ASCII码)和22H(低位BCD数的ASCII码)单元的程序。

程序如下:

ORG 0500H

MOV R0,#22H ;R0<--22H

MOV @R0,#00H ;22H单元清零

MOV A,20H ;20H中BCD数送A

XCHD A,@R0 ;低位BCD数至22H

ORL22H,#30H ;完成低位BCD数转换

SW AP A ;高位BCD数送抵4位

ORL A ,#30H ;完成高位BCD数转换

MOV 21H, A ;存入21H单元

SJMP $ ;结束

END

4.4 已知20H单元中有一个二进制数,请编程把它转换为3位BCD数,把百位BCD数送入FIRST单元的低4位,十位和个位BCD数放在SECOND单元,十位BCD数在SECOND单元中的高4位。

程序如下:

ORG 0200H

FIRST DA TA30H

SECOND DA TA31H

MOV A,20H ;被除数送A

MOV B,#64H ;除数100送B

DIV AB ;A%B=A----B

MOV FIRST ,A ;百位BCD送FIRST

MOV A,B ;余数10送B

MOV B,#0AH ;除数10送B

DIV AB ;A%B=A---B

SW AP A;十位BCD送高4位

ORL A,B ;完成十位和个位BCD数装配

MOV SECOND,A ;存入SECOND单元

SJMP $ ;结束

END

4.5 已知V AR单元内有一自变量X,请按如下条件编出求函数值Y并将它存入FUNC单元的程序。

1 X>0

Y= 0 X=0

-1 X<0

先分支后赋值先赋值后赋值ORG 0100H ORG 0100H

V AR DA TA30H V AR DA TA30H

FUNC DA TA31H FUNC DA TA31H

MOV A,V AR ;A<--X MOV A,V AR ;A<--X

JZ DONE ;若X=0,则转DONE JZ DONE ;若X=0,则转DONE JNB ACC.7,POSI ;若X>0,则转POSI MOV R0,#0FFH ;若X≠0,则R0<--1 MOV A, #0FFH ;若X<0.,则A<-- -1 JB ACC.7,NEG ;若X<0,则转NEG SJMP DONE ;转DONE MOV R0,#01H ;若X>0,R0<--1 POSI:MOV A,#01H ;A<--1 NEG :MOV A,R0 ;A<--R0 DONE:MOV FUNC ,A ;存Y值DONE:MOV FUNC,A;存Y值SJMP $ SJMP $

END END

4.7 已知两个带符号数分别存入ONE和TWO单元,试编程比较它们的大小,并把大数存入MAX单元。

程序如下:

ORG 0400H

ONE DA TA30H

TWO DA TA 31H

MAX DA TA32H

CLR C ;Cy清零

MOV A,ONE ;X送A

SUBB A,TWO ;X-Y.形成OV标志

JZ DONE ;若X=Y,则DONE

JB ACC.7,NEG ;若X-Y为负,则转NEG

JB OV, YMAX;若OV=1,则YMAX

SJMP XMAX ;若OV=0,则XMAX

NEG:JB OV, XMAX ;若OV=1,则XMAX

YMAX:MOV A, TWO ;Y>X

SJMP DONE ;转DONE

XMAX: MOV A, ONE ;X>Y

DONE: MOV MAX ,A ;大数送MAX单元

SJMP $

END

4.8某系有200名学生参加外语统考,若成绩已存放在MCS-51外部RAM起始地址为ENGLISH的连续存储单元,现决定给成绩在95-100分之间的学生颁发A级合格证书,并给成绩在90-94分之间的学生颁发B级合格证书。试编写程序,统计获得A级和B 级证书的学生人数,并把统计结果存入内存RAM的GRADA和GRADB单元。

程序如下:

ORG 0600H

ENGLISH XDA TA1000H

GRADA DA TA 20H

GRADB DA TA 21H

MOV GRADA ,#00H ;GRADA单元清零

MOV GRADB,#00H ;GRADB单元清零

MOV R2,#0C8H ;参赛总人数送R2

MOV DPTR ,#ENGLISH ;学生成绩起始地址送DPTR

LOOP: MOVX A,@DPTR ;取某学生成绩到A

CJNE A, #5FH, LOOP1 ;与95作比较,形成Cy

LOOP1:JNC NEXT1 ;若A≥95,则NEXT1

CJNE A,#5AH,LOOP2 ;与90作比较

LOOP2: JC NEXT ;若A<90,则NEXT

INC GRADB ;若为B级,则GRADB单元内容加1

SJMP NEXT

NEXT1: INC GRADA;若A≥95,则GRADA单元内容加1 NEXT: INC DPTR ;修改学生成绩指针

DJNZ R2,LOOP ;若未完,则LOOP

SJMP $ ;结束

END

4.9 已知内部RAM的BLOCK单元开始有一无符号数据块,块长在LEN单元。请编写求数据块中各数累加和并存入SUM单元的程序。

程序如下:

ORG 0200H

LEN DA TA20H

SUM DA TA21H

BLOCK DA TA22H

CLR A;A清零

MOV R2,LEN ;块长送R2

MOV R1,#BLOCK ;快起始地址送R1

INC R2 ;R2<--块长+1

SJMP CHECK

LOOP: ADD A,@R1 ;A<--A+(R1)

INC R1 ;修改数据块指针R1

CHECK: DJNZ R2,LOOP ;若未完,则转LOOP

MOV SUM,A ;存累加和

SJMP $

END

4.10 已知内部RAM ADDR为起始地址的数据块内数据是无符号数,块长在LEN单元内。请编程求数据块中最大值并存入MAX单元。

程序如下:

ORG 0300H

LEN DA T A 20H

MAX DA TA22H

ADDR DA TA23H

MOV MAX ,#00H ;MAX单元清零

MOV R0,#ADDR ;ADDR送R0

LOOP: MOV A,@R0 ;数据块中某数送A

CJNE A,MAX ,NEXT1 ;A和(MAX)比较

NEXT1: JC NEXT ;若A<(MAX),则NEXT

MOV MAX ,A;若A≥(MAX),则大数送MAX

NEXT: INC R0 ;修改数据指针R0

DJNZ LEN,LOOP ;若未完,则转LOOP

SJMP $

END

4.11 设有10组3字节被加数和加数,分别存放在以BLOCK1和BLOCK2为起始地址的两个数据块中。请编程求10组数的和,并把和送回以BLOCK1位起始地址的数据块中。

程序如下:

ORG 0500H

BLOCK1 DA TA20H

BLOCK2 DA TA40H

MOV RO, #BLOCK1 ;被加数数据块起始地址送R0

MOV R1,#BLOCK2 ;加数数据块起始地址送R1

MOV R2,#0AH ;加法组数10送R2

LOOP: MOV R3,#03H ;被加数或加数字节数送R3

CLR C ;CY清零

LOOP1: MOV A, @R0 ;被加数送A

ADDC A, @R1 ;加一个字节

MOV @R0,A;存和数字节

INC R0 ;修改被加数指针

INC R1 ;修改加数指针

DJNZ R3,LOOP1 ;若一组加法未完,LOOP1

DJNZ R2,LOOP ;若10组加法未完,则LOOP

SJMP $

END

4.12设单片机8031内部RAM起始地址为30 H的数据块中有64个无符号数。试编写程序使它们按从小到大的顺序排列。

程序如下:

ORG 1000H

BUBBLE: MOV R0,30H ; 置数据块指针RO

MOV R2,#64 ;块长送R2

CLR 7FH ;交换标志2FH.7清零

DEC R2 ;块长—1为比较次数

BULOOP:MOV 20H,@R0 ;eN送20H

MOV A,@R0 ;eN送A

INC R0

MOV 21H,@R0 ;eN-1送21H

CJNE A, 21H, LOOP ;(20H)和(21H)比较

LOOP: JC BU NEXT ;若(20H)<(21H),则BUNEXT

MOV @R0, 20H ;若(20H)≥(21H),则两者交换

DEC R0

MOV @ R0, 21H

INC RO ;恢复数据块指针

SETB 7FH ;置“1”交换标志位

BUNEXT:DJNZ R2,BULOOP ;若一次冒泡未完,则BULOOP

JB 7FH,BUBBLE ;若交换标志位为1,则BUBBLE

SJMP$ ;结束

END

4.13已知R0低4位有一个十六位进制数(0~F中的一个),请编写能把它转换成相应ASCNII码并送入RO的程序。

程序如下:

ORG O4OOH

MOV A, RO ;去转换值到A

ANL A, #0FH ;屏蔽高4位

CJNE A,#10,NEXT1 ;A和10比较

NEXT1:JNC NEXT2 ;若>9,则转NEXT2

ADD A,#30H ;若<10,则A<--A+30H

SJMP DONE ;转DONE

NEXT2:ADD A , # 37H ; A<--A+37H

DONE:MOV RO,A ;存结果

SJMP $

END

4.14 已知BLOCK1为起始地址的数据块(数据块长度在LEN单元),数据块中每个存储单元中的高、低4位分别为两个十六进制数,请通过编程把它们转换为相应的ASCII码,并放在从BLOCK2开始的连续存储单元(低4位ASCII码在前,高4位ASCII 码在后)。

ORG 0500H

LEN DA TA20H

BLOCK 1 DA TA21H

BLOCK2 DA TA 51H

MOV R0,#BLOCK1 ;BLOCK1送R0

MOV R1,#BLOCK2 ;BLOCK2送R1

LOOP: MOV A, @R0 ;取源数据块中数

ANL A,#0FH ;取出低4位

ADD A,#17 ;第一次地址调整

MOVC A,@A+PC ;第一次查表

MOV @R1,A;存第一次转换结果

MOV A,@R0 ;重新取出被转换数

SW AP A ;高4位调入低4位

ANL A,#0FH ;取出低4位

ADD A,#09H ;第二次地址调整

MOVC A,@A+PC ;第二次查表

INC R1 ;修改目的数据块指针

MOV @R1,A;存第二次转换结果

INC R0 ;修改原数据块指针

INC R1 ;修改目的数据块指针

DJNZ LEN,LOOP ;若未转换完,则转LOOP

SJMP $ ;结束

ASCTAB: DB '0','1','2','3','4'

DB '5','6','7','8','9'

DB 'A','B','C','D','E','F'

END

4.15 设有一起始地址为DTA TAB的数据表格,表中存放1024个元素,每个元素为2字节。请编写能根据R5、R4中元素的序号查找对应元素并放入R5、R4(R5中为高8位,R4中为低8位)的程序。

程序如下:

ORG 0500H

START: MOV DPTR,#DTA TAB ;数据表格起始地址送DPTR

MOV A,R4 ;元素序号低字节送A

CLR C ;Cy清零

RLC A ;2*元素序号低字节

XCH A, R5 ;存入R5,元素序号高字节送A

RLC A;2*元素序号高字节

XCH A, R5

ADD A,DPL ;2*元素序号低字节+DPL

MOV DPL,A ;存入DPL

MOV A,DPH

ADDC A,R5 ;2*元素序号高字节+DPL

MOV DPH,A ;存入DPH

CLR A;清零A

MOVC A,@A+DPTR ;查表的元素高字节

MOV R5,A ;存入R5

MOV A,#01H

MOVC A,@A+DPTR ;查表的元素低字节

MOV R4,A;存入R4

RET ;返回主程

DTA TAB: DW --- ;元素表格,高字节在前

DW----

-

-

.

END

4.16 设MDA和MDB内有两数a和b,请编写球c=a^2+b^2并把c送入MDC的程序。设a和b均为小于10整数。

程序如下:

ORG 1000H

MDA DA TA20H

MDB DA TA21H

MDC DA TA22H

MOV A,MDA ;入口参数a送A

ACALL SQR ;求b^2

ADD A, R1 ;a^2+b^2送A

MOV MDC,A ;存入MDC

SJMP $ ;结束

SQR : ADD A,#01H ;地址调整

MOVC A,@A+PC ;查平方表

RET ;返回

SQRTAB: DB 0,1,4,9,16

DB 25,36,49,64,81

END

4.17 在HEX单元中存有两个十六进制数,试通过编程分别把它们转化成ASCII码存入ASC和ASC+1单元。

程序如下:

ORG 1200H

PUSH HEX ;入口参数压栈

ACALL HASC ;求十六进制数地位的ASCII码

POP ASC ;出口参数存入ASC

MOV A,HEX ;十六进制数送A

SW AP A ;十六进制数高位送累加器A的低4位

PUSH ACC ;入口参数压栈

ACALL HASC ;求十六进制数高位的ASCII码

POP ASC+1 ;出口参数送ASC+1单元

SJMP $ ;结束

HASC:DEC SP

DEC SP ;入口参数地址送SP

POP ACC ;入口参数送A

ANL A,#0FH ;取出入口参数低4位

ADD A, #07H ;地址调整

MOVC A,@A+PC ;查表的相应ASCII码

PUSH ACC ;出口参数压栈

INC SP

INC SP ;SP指向断点地址高8位

RET ;返回主程序

ASCTAB: DB '0','1','2','3','4','5','6','7'

DB '8','9','A','B','C','D','E','F'

END

课后4.8 已知,从内部RAM BLOCK单元开始存放有一组带符号数,数的个数存放在LEN单元,请编写可以统计其中正数和负数个数并分别存入NUM和NUM+1单元的程序。

程序如下:

ORG 0200H

LEN DA TA20H

NUM DA TA21H

BLOCK DA TA23H

MOV NUM ,#00H ;清零NUM单元

MOV NUM+1,#00H ;清零NUM+1单元

MOV R0,#BLOCK ;R0<--块起始地址

LOOP: MOV A,@R0 ;A<--源数

JNB ACC.7,POSI ;若正,则POSI

INC NUM+1 ;负数个数加1

SJMP NEXT

POSI: INC NUM ;正数个数加1

NEXT: INC R0 ;原指针加1

DJNZ LEN,LOOP ;若未完,则LOOP

SJMP $

END

4.9 设自变量X 为一无符号数,存放在内部RAM的V AX单元,函数Y存放在FUNC 单元。请编写满足如下关系的程序:

X X≥50

Y= 5X 50>X≥20

2X X<20

程序如下:

ORG 0200H

V AR DA TA20H

FUNC DA TA21H

MOV A,V AR ;A<--(20H)

CJNE A,#50H ,NEXT1 ;建立Cy

NEXT1: JNC DONE ;若X>=50,则DONE

CJNE A,#20H,NEXT2 ;建立Cy

NEXT2: JC NEXT3 ;若X<20,则NEXT3

RL A ;若X>19,则A=5X

RL A

ADD A,20H ;A<--5X

SJMP DONE

NEXT3: RL A ;A<--2X

DONE: MOV FUNC ,A;21H<--A

SJMP $

END

实验程序:

1.存储块清零

Block equ 4000h

mov dptr, #Block ; 起始地址

mov r0, #0 ; 清256 字节

clr a

Loop:

movx @dptr, a

inc dptr ; 指向下一个地址

djnz r0, Loop ; 记数减一

ljmp $

end

1,二进制到ASCII码转换

将A拆为二个ASCII 码, 并存入Result 开始的二个单元Result equ 20h

org 0

ljmp Start

ASCIITab:

db '0123456789ABCDEF' ; 定义数字对应的ASCII表BinToHex:

mov dptr, #ASCIITab

mov b, a ; 暂存A

swap a

anl a, #0fh ; 取高四位

movc a, @a+dptr ; 查ASCII表

mov Result, a

mov a, b ; 恢复A

anl a, #0fh ; 取低四位

movc a, @a+dptr ; 查ASCII表

mov Result+1, a

ret

Start:

mov sp, #40h

mov a, #1ah

call BinToHex

ljmp $

End

2.程序跳转表

org 0

ljmp Start

Func0: mov a, #0

ret

Func1: mov a, #1

ret

Func2: mov a, #2

ret

Func3: mov a, #3

ret

FuncEnter:

add a, acc ; ajmp 为二字节指令, 调用号X 2

mov dptr, #FuncTab

jmp @a+dptr

FuncTab:

ajmp Func0

ajmp Func1

ajmp Func2

ajmp Func3

Start:

mov a, #0

call FuncEnter

mov a, #1

call FuncEnter

mov a, #2

call FuncEnter

mov a, #3

call FuncEnter

ljmp $

end

3.数据排序

Size equ 10 ; 数据个数

Array equ 50h ; 数据起始地址Change equ 0 ; 交换标志

Sort:

mov r0, #Array

mov r7, #Size-1

clr Change

Goon:

mov a, @r0

mov r2, a

inc r0

mov B, @r0

cjne a, B, NotEqual

sjmp Next

NotEqual:

jc Next ; 前小后大, 不交换

setb Change ; 前大后小, 置交换标志

xch a, @r0 ; 交换

dec r0

xch a, @r0

inc r0

Next:

djnz r7, Goon

jb Change, Sort

ljmp $

end

4. IO口输入输出

Loop:

mov a, #01h

mov r2, #8

Output:

mov p1,a

rr a

call Delay

djnz r2,Output

ljmp loop

Delay:

mov r6, #0

mov r7, #0

DelayLoop:

djnz r6, DelayLoop

djnz r7, DelayLoop

ret

end

5. KeyLeft equ P1.0

KeyRight equ P1.1

LedLeft equ P1.2

LedRight equ P1.3

SETB KeyLeft

SETB KeyRight

Loop:

MOV C,KeyLeft

MOV LedLeft,C

MOV C,KeyRight

MOV Ledright,C

LJMP Loop

END

5.用74HC245输入数据

CS245 equ 8000h

org 0000h

Loop:

mov dptr,#CS245

movx a, @dptr

ljmp Loop

end

6.用74HC273输出数据

CS273 equ 8000h

mov dptr, #CS273

mov a, #1

Loop:

movx @dptr, a

rl a

nop

ljmp Loop

end

.7.八段数码管显示

OUTBIT equ 08002h ; 位控制口

OUTSEG equ 08004h ; 段控制口

IN equ 08001h ; 键盘读入口

LEDBuf equ 60h ; 显示缓冲

Num equ 70h ; 显示的数据

DelayT equ 75h ;

ljmp Start

LEDMAP: ; 八段管显示码

db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h

db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h Delay: ; 延时子程序

mov r7, #0

DelayLoop:

djnz r7, DelayLoop

djnz r6, DelayLoop

ret

DisplayLED:

mov r0, #LEDBuf

mov r1, #6 ; 共6个八段管

mov r2, #00100000b ; 从左边开始显示Loop:

mov dptr, #OUTBIT

mov a, #0

movx @dptr, a ; 关所有八段管

mov a, @r0

mov dptr, #OUTSEG

movx @dptr,a

mov dptr, #OUTBIT

mov a, r2

movx @dptr, a ; 显示一位八段管

mov r6, #01

call Delay

mov a, r2 ; 显示下一位

rr a

mov r2, a

inc r0

djnz r1, Loop

mov dptr, #OUTBIT

mov a, #0

movx @dptr, a ; 关所有八段管

ret

Start:

mov sp, #40h

mov Num, #0

MLoop:

inc Num

mov a, Num

mov b, a

mov r0, #LEDBuf

FillBuf:

mov a, b

anl a, #0fh

mov dptr, #LEDMap

movc a, @a+dptr ; 数字转换成显示码

mov @r0,a ; 显示在码填入显示缓冲

inc r0

inc b

cjne r0, #LEDBuf+6, FillBuf

mov DelayT,#30

DispAgain:

call DisplayLED ; 显示

djnz DelayT,DispAgain

ljmp MLoop

end

8.外部中断实验

LED equ P1.0

LEDBuf equ 0

ljmp Start

org 3

Interrupt0:

push PSW ; 保护现场

cpl LEDBuf ; 取反LED

mov c, LEDBuf

mov LED, c

pop PSW ; 恢复现场

reti

Start:

clr LEDBuf

clr LED

mov TCON, #01h ; 外部中断0下降沿触发

mov IE, #81h ; 打开外部中断允许位(EX0)及总中断允许位(EA)

ljmp $

end

9.外部中断(急救车与交通灯)

Flash equ 0 ; LED状态

STOP equ 1

SR equ P1.0 ; 南北红灯

SG equ P1.1 ; 南北绿灯

SY equ P1.2 ; 南北黄灯

ER equ P1.3 ; 东西红灯

EG equ P1.4 ; 东西绿灯

EY equ P1.5 ; 东西黄灯

ljmp Start

org 3

setb STOP ; 南北, 东西均红灯

reti

Start:

mov SP, #70

mov TCON, #01h ; down edge IT0

mov IE, #81h ; enable EA, EX0

setb SR ; 南北, 东西均红灯

clr SY

clr SG

setb ER

clr EY

clr EG

clr STOP

Loop:

jb STOP, AllRed

setb SR ; 南北红灯, 东西绿灯

clr SY

clr SG

clr ER

clr EY

setb EG

mov a, #20

call Delay

jb STOP, AllRed

setb SR ; 南北红灯, 东西黄灯闪

clr SY

clr SG

clr ER

clr EY

clr EG

clr Flash

mov r7, #9

Loop1:

mov c, Flash

mov EY, c

mov a, #1

call Delay

cpl Flash

djnz r7, Loop1

jb STOP, AllRed

clr SR ; 南北绿灯, 东西红灯

clr SY

setb SG

setb ER

clr EY

clr EG

mov a, #20

call Delay

jb STOP, AllRed

clr SR ; 东西红灯, 南北黄灯闪

clr SY

clr SG

setb ER

clr EY

clr EG

clr Flash

mov r7, #9

Loop2:

mov c, Flash

mov SY, c

mov a, #1

call Delay

cpl Flash

djnz r7, Loop2

ljmp Loop

AllRed:

setb SR

clr SY

clr SG

setb ER

clr EY

clr EG

clr STOP

mov a, #10

call Delay

ljmp Loop

Delay: ; 延时子程序

mov r1, #80H

mov r0, #0

DelayLoop:

jb STOP, ExitDelay

djnz r0, DelayLoop

djnz r1, DelayLoop

djnz ACC, Delay

ExitDelay:

ret

End.

10.计数器实验

mov TMOD, #00000101b ; 方式1,记数器

mov TH0, #0

mov TL0, #0

setb TR0 ; 开始记数

Loop:

mov P1, TL0 ; 将记数结果送P1口

ljmp Loop

End

TEMP EQU 30H

ORG 0000H

START: MOV SP,#5FH

MOV P2,#73H

MOV P1,#0FFH

NOKEY:

MOV A,P1

CPL A

JZ NOKEY

MOV TEMP,P1

MOV A,P1

CJNE A,TEMP,NOKEY

MOV R7,#16

MOV R2,#0

LOOP:MOV A,R2

MOV DPTR,#CODE_P0

MOVC A,@A+DPTR

MOV P2,A

INC R2

LCALL DL1S

DJNZ R7,LOOP

SJMP ST ART

DL10ms:

MOV R6,#125

DL1: MOV R5,#98

NOP

DL2: DJNZ R5,DL2

DJNZ R6,DL1

RET

DL1s: MOV R4,#13

DL3: ACALL DL10ms

DJNZ R4,DL3

RET

CODE_P0: DB 3FH,06H,5BH,4FH

DB 66H,6DH,7DH,07H

DB 7FH,6FH,77H,7CH

DB 39H,5EH,79H,71H end

TEMP EQU 30H

ORG 0000H

START: MOV SP,#5FH

MOV P2,#73H

MOV P1,#0FFH

单片机试题库分章节答案(C语言)

(红色是考试考过的,蓝色是老师给的习题“重点看“) 第1部分单片机概述及数学基础 一、填空题 1、十进制255的二进制是11111111 ,十六进制是FF 。 2、单片机是将CPU、存储器、特殊功能寄存器、定时/计数器和输入/输出接口电路、以及相互连接的总线等集成在一块芯片上。 3、十进制127的二进制是1111111,十六进制是7F。 4、+59的原码是00111011,-59的补码是11000101。 5、十进制数100转换为二进制数是1100100;十六进制数100转换为十进制数是256。 6、十进制数40转换为二进制数是101000;二进制数10.10转换为十进制数是 2. 5。 7、十进制99的二进制是1100 011 ,十六进制是63 。 二、判断题 (×)1、AT89S51是一种高性能的16位单片机。8位机 (×)2、有符号正数的符号位是用1表示的。 三、选择题 ()1、计算机中最常用的字符信息编码是(A) A. ASCII B.BCD码 C. 余3码 D. 循环码 四、简答题 1、何谓单片机?单片机与一般微型计算机相比,具有哪些特点? 第2部分51单片机硬件结构、存储系统及 I/O接口 一、填空题 1、AT89S51单片机共有 4 个8位的并行I/O口,其中既可用作地址/数据口,又可用作一般的I/O口的是P0 。 2、若采用12MHz的晶振,则MCS-51单片机的振荡周期为__ 1/12 μS __ ,

机器周期为____1μS __。 3、AT89S51单片机字长是___8___位,有___40根引脚。 4.89S51单片机是8 位单片机,其PC计数器是16 位。 5.若单片机使用的晶振频率是6MHz,那么一个振荡周期是1/6 μS,一个机器周期是2μS μS。 6.89S51单片机是+5 V供电的。4.0-5.5V 7.堆栈是内部数据RAM区中,数据按先进后出的原则出入栈的。8.MSC-51系列单片机具有 4 个并行输入/输出端口,其中_P0_口是一个两用接口,它可分时输出外部存储器的低八位地址和传送数据,而_P1__口是一个专供用户使用的I/O口,常用于第二功能的是P3 口。 9.当单片机系统进行存储器扩展时,用P2口的作为地址总线的高八位,用P0作为地址总线的低八位。 10.半导体存储器分为___ROM___和__RAM__两大类,其中前者具有非易失性(即掉电后仍能保存信息),因而一般用来存放系统程序,而后者具有易失性,因而一般用来存放经常变动的用户程序.中间结果等。 11.MCS-51系列单片机对外部数据存储器是采用_DPTR___作为指针的,其字长为_16__位,因而可寻址的数据存储器的最大空间为_64K_字节。 12. 51单片机有26个特殊功能寄存器,其中11个具有位寻址功能。 13. 当单片机系统需要外扩展存储器时,P2和P0 作为地址总线。 14.AT89S51单片机上电初始化后,将自动设置一些寄存器的初始值,其中堆栈指针SP的初始值为07H ,P0口复位值是FFH。 15.单片机两种节电模式:空闲模式和掉电模式,节电模式是由特殊功能寄存器PCON中的有关位来控制的。 16. 在单片机硬件设计时,31脚一般要接___高电平___,晶振在PCB设计中应尽量___靠近51芯片___。 17.在AT89S51单片机中,RAM是数据存储器,ROM为程序存储器。 18.单片机的复位方式主要有上电复位和按键复位两种。 19.AT89S51单片机的内部RAM的寻址空间为256B,而内部ROM的寻址空间为4K。

自学考试单片机试题库完整

选择题: .MCS-51单片机的内部RAM的工作寄存器区共有( C ) A 8个单元 B 16个单元 C 32个单元 D 24个单元 .不能使MCS-51单片机的SP改变的指令是( A ) A ADD指令 B POP指令 C PUSH指令 D LCALL指令。 .在MOVX A,@DPTR指令中,DPTR中的内容是( C ) A 片内数据存储器地址 B 片内程序存储器的地址 C 片外数据存储器地址 D 片外程序存储器地址 .8031外扩数据存储器的最大容量是( D ) A 8K。 B 16K。 C 32K。 D 64K。 .MCS-51构成系统总线时,可提供低8位地址线的口是( A ) A P0口 B P1口 C P2口 D P3口 .某存储器芯片的容量是8K 8,其片内寻址地址线为( D ) A 10根 B 11根 C 12根 D 13根 .在外扩多片数据存储器芯片时,不能在各存储器芯片间并行连接的信号是( A )A地址译码输出信号。 B 数据信号。 C 低位地址信号。 D读写信号。 .当串行传送二进制数时波特的单位是( B ) A 字符/秒。 B 位/秒。 C 帧/秒。 D 位/分。 。 MCS-51执行以下哪条指令,使PC发生突变,而不是顺序加1改变。( B) A MOV 指令 B JZ指令 C PUSH 指令 D ADD指令 .以下指令有错误的是( C ) A MOV 28H,@R2 B MOV F0,A CC.3 C PUSH DPTR D MOV C,30H .若8051单片机的时钟频率为12 MHZ,则一个机器周期为_______微秒。( D ) A 0.25 B 0.5 C 0.75 D 1 .串行口工作方式1的波特率是:( D ) A 固定的,为f osc/16。 B 固定的,为f osc/32。 C 固定的,为f osc/64。 D 可变的,取决于T1的溢出率。.8031在下列各种运行情况中,能立即响应中断的是:( C ) A 当前正在执行RETI指令。 B 当前正在进行高优先级中断处理。

C程序设计题库

填空题 20*2 ■对于51系列单片机,现有4种语言支持程序设计,它们是(汇编语言)、PL/M、(C语言)、BASIC。 ■单片机程序设计时需要在主程序中设计死循环来防止程序跑飞。在C语言中采用(while(1))或for(;;)语句实现死循环。 ■单片机程序设计中经常用到中断,在C语言程序设计中外部中断1的中断入口序号(2),而汇编语言程序设计中外部中断1的入口地址是(0013H)。 ■编写串口中断程序时要在函数说明部分后写interrupt 4 。 ■编写定时器0中断程序时要在函数说明部分后写interrupt 1 。 ■C语言程序设计中有一个无符号形字符变量temp和一个位变量Flag,现在分别对它们取反。相应的语句为temp=__~___temp; Flag=_!___Flag;。 ■I2C总线在传送数据过程中共有三种类型控制信号,它们分别是:_(起始信号)____、应答信号、_(停止信号)_____。 ■I2C的地址由(协议规定)与(硬件设置)两部分组成。 ■I2C器件的两条信号线分别为串行时钟线SCL 与串行数据线 SDA 。 ■MCS-51单片机操作I2C器件时,单片机必须做为主机,I\O编程。 ■在Cx51所有的数据类型中,只有bit 与unsigned char 直接支持机器指令。 ■编译器性能比较有如下几个方面:算数支持、生产代码大小、开打速度、支持浮点和long 。 ■在KEIL开发套件中,BL51链接器/定位器用于创建一个绝对目标横快。 ■Cx51中函数分为两大类:标准库函数和用户自定义函数。 ■在函数名前如果不指定函数类型,则该函数的类型为整型。 ■具有一定格式的数字或数值叫做数据,数据的不同格式叫做数据类型, 数据按一定的数据类型进行的排列、组合及架构称为数据结构。 ■数据类型的转换有自动转换与强制转换两种。 ■直接出现在程序中的数值(如TMOD=0x21)称为常数。在程序运行的过程中,其值不能改变且被定义为符号的(如#define CONST 60)称为常量。 ■软件对常量与变量的命名规范是:常量名用大写字母,变量名用小写字母。 ■MCS-51单片机串口用于中断通讯时,在进行初始化时必须设置的特殊功能寄存器有:

单片机试卷及答案

一选择题 (n )1.MCS—51单片机是高档16位单片机。 (y )2.MCS—51的产品8051与8031的区别是:8031片内无ROM。 (n )3.单片机的CPU从功能上可分为运算器和存贮器。 (y )4.MCS-51的指令寄存器是一个8位寄存器,用于暂存待执行指令,等待译码。 (n )5.MCS—51的指令寄存器是对指令寄存器中的指令进行译码,将指令转变为执行此指令所需要的电信号。 (y )6.8051的累加器ACC是一个8位的寄存器,简称为A,用来存一个操作数或中间结果。 (y )7.8051的程序状态字寄存器PSW是一个8位的专用寄存器,用于存程序运行中的各种状态信息。 (n )8.MCS—51的程序存贮器用于存放运算中间结果。(y )9.MCS—51的数据存贮器在物理上和逻辑上都分为两个地址空间:一个是片内的256字节的RAM,另一个是片外最大可扩充64K字节的RAM。 (y )10.单片机的复位有上电自动复位和按钮手动复位两种,当单片机运行出错或进入死循环时,可按复位键重新启动。 (n )11.CPU的时钟周期为振荡器频率的倒数。 (n )12.单片机的一个机器周期是指完成某一个规定操作所需的时间,一般情况下,一个机器周期等于一个时钟周期组成。(y )13.单片机的指令周期是执行一条指令所需要的时间。一般由若干个机器周期组成。 (n )14.单片机系统扩展时使用的锁存器,是用于锁存高8位地址。 (n )15.MCS—51单片机上电复位后,片内数据存储器的内容均为00H。 (y )16.当8051单片机的晶振频率为12MHZ时,ALE地址锁存信号端的输出频率为2MHZ的方脉冲。 (y )17.8051单片机片内RAM从00H~1FH的32个单元,不仅可以作工作寄存器使用,而且可作为RAM来读写。 (n )18.MCS—51单片机的片内存贮器称为程序存贮器。(n )19.MCS—51单片机的数据存贮器是指外部存贮器。(y )20.MCS—51单片机的特殊功能寄存器集中布置在片内数据存贮器的一个区域中。 (y )21.微机控制系统的抗干扰问题是关系到微机应用成败的大问题. 二、单项选择题 1.MCS—51单片机的CPU主要的组成部分为a 。 A.运算器、控制器B.加法器、寄存器C.运算器、加法器D.运算器、译码器 2.单片机能直接运行的程序叫c 。 源程序B。汇编程序C。目标程序D。编译程序3.单片机中的程序计数器PC用来c 。 A.存放指令B.存放正在执行的指令地址C.存放下一条指令地址 D.存放上一条指令地址 4.单片机上电复位后,PC的内容和SP的内容为b 。A.0000H,00H B。0000H,07H C。0003H,07H D。0800H,08H 5.单片机8031的ALE引脚是b 。 输出高电平B。输出矩形脉冲,频率为fosc的1/6 C.输出低电平D。输出矩形脉冲,频率为fosc的1/2 6.单片机8031的引脚a 。 A.必须接地B。必须接+5V C。可悬空D。以上三种视需要而定7.访问外部存贮器或其它接口芯片时,作数据线和低8位地址线的是A 。 A.P0口B。P1口C。P2口D。P0口和P2口 8.PSW中的RS1和RS0用来a 。 选择工作寄存器区号B。指示复位C。选择定时器D。选择工作方式 9.上电复位后,PSW的值为d 。 A.1 B。07H C。FFH D。0 10.单片机上电复位后,堆栈区的最大允许范围是b 个单元。A.64 B。120 C。128 D。256 11.单片机上电复位后,堆栈区的最大允许范围是内部RAM的d 。 A.00H—FFH B。00H—07H C。07H—7FH D。08H—7FH 12.堆栈指针SP在内部RAM中的直接地址是c 。 A.00H B。07H C。81H D。FFH 的P0口,当使用外部存贮存器时它是一个d 。 A.传输高8位地址口A.传输低8位地址口 C.传输高8位数据口D.传输低8位地址/数据口 14.P0口作数据线和低8位地址线时b 。 A.应外接上拉电阻B.不能作I/O口C.能作I/O口D.应外接高电平 15.对于8031单片机,其内部RAM d 。 A.只能位寻址B.只能字节寻址C.既可位寻址又可字节寻址D.少部分只能位寻址 16.寻址方式就是c 的方式。 A.查找指令操作码B.查找指令C.查找指令操作数 D.查找指令操作码和操作数 17.8031 单片机若晶振频率为fosc=12MHz,则一个机器周期等于c μS。 A.1/12 B.1/2 C.1 D.2 18.MCS—51单片机的数据指针DPTR是一个16位的专用地址指针寄存器,主要用来b 。 A.存放指令B.存放16位地址,作间址寄存器使用C.存放

单片机题库 带答案

单片机题库 一、填空题 1、当使用8031单片机时,需要扩展外部程序存储器,此时/EA应接((地)低电平)。 2.8051单片机内部有( 2 )个定时/计数器,门控制信号GATE 设置为1 时,由(TRx )和(INTx)控制定时器的启动。 3. 若由程序设定RS1、RS0=01,则工作寄存器R0~R7的直接地址为(08H~0FH)。 4.若累加器A中的数据为01110011B,则PSW中的P=( 1 )。 5、MCS-51单片机具有4个(8 )位并行I/O口,有( 1)个全双工的串行输入输出口。 6、计算机的元件级总线有(地址总线)、(数据总线)、(控制总线) 7、MOV A,@R1指令中,源操作数的寻址方式是(寄存器间接寻址)。 8、8051单片机堆栈遵循数据先入后出的原则。 9、8051单片机使用电源为5V。 10、在立即寻址方式中,在数前使用#号来表示立即数。 11、在8051单片机中,加法指令可以分为ADD,ADC两种。 12、设8051外接12MHz的石英晶体,则一个机器周期的时间宽度为1us。 13、8051单片机的C语言源程序的扩展名为dac,Dac。 14、在设计汇编语言源程序时,可以使用顺序结构的程序,也可以使用某些指令构成分支结构或者循环结构的程序。15、当8051单片机复位后,程序的入口地址为 0000H 。

16、8051单片机中的定时器/计数器有 2个。 17、8051单片机有5 个中断源,分成 2个优先级。 18、MCS-51单片机具有8位CPU,共有 16根地址线。 19、MCS-51片内有( 128 )个字节的数据存储单元,( 21 )个 特殊功能寄存器。片内数据存储器寻址空间是( 256 )字节。 20、内部RAM低128个字节划分为( 工作寄存器区 )、( 位寻 址 )、( 数据缓冲区 )三个部分。 21、访问特殊功能寄存器和片外数据存储器分别采用( 直接寻 址 )、( 寄存器间接寻址 )寻址方式。 22、清除片内RAM 2FH单元最低位,使用的命令是( CLR 08H )。 23、在MCS-51系列单片机MCS-51单片机有4个( 8 )位的并行 I/O口,其中( P0 )口用做低8位地址线和数据线分时复用, 而 ( P2 )口用作高8位地址线。 24、MCS-51单片机有一个具有( 2 )个中断优先级,( 5 ) 个中断源的中断系统。对于每个中断源,均可通过对特殊功能寄存器 中中断优先级寄存器设置其优先级,置( 1 )为高优先级。 25、8031是( 高 )电平复位,复位后,P0-P3口为( 高 ) 电平,SP的值为( 07H ),PC的值为( 0000H ),工作寄 存器位于第( 0 )组。 26、MCS-51单片机具有( 8 )位CPU,共有( 16 )根地址线,可寻 址外部程序存储器( 64K)字节,可寻址外部数据存储器 ( 64K )字节。

汇编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的堆栈是软件填写堆栈指针临时在片内数据存储器内开辟的区域。

单片机c语言设计试题答案

单片机C语言程序设计师试题 一、填空题 1、设X=5AH,Y=36H,则X与Y“或”运算为_________,X与Y的“异或”运算为________。 2、若机器的字长为8位,X=17,Y=35,则X+Y=_______,X-Y=_______(要求结果写出二进制形式)。 3、单片机的复位操作是__________(高电平/低电平),单片机复位后,堆栈指针SP的值是________。 4、单片机中,常用作地址锁存器的芯片是______________,常用作地址译码器芯片是_________________。 5、若选择内部程序存储器,应该设置为____________(高电平/低电平),那么,PSEN信号的处理方式为__________________。 6、单片机程序的入口地址是______________,外部中断1的入口地址是_______________。 7、若采用6MHz的晶体振荡器,则MCS-51单片机的振荡周期为_________,机器周期为_______________。 8、外围扩展芯片的选择方法有两种,它们分别是__________________和_______________。 9、单片机的内部RAM区中,可以位寻址的地址范围是__________________,特殊功能寄存器中,可位寻址的地址是____________________。 10、子程序返回指令是________,中断子程序返回指令是_______。 11、8051单片机的存储器的最大特点是____________________与____________________分开编址。 12、8051最多可以有_______个并行输入输出口,最少也可以有_______个并行口。 13、_______是C语言的基本单位。 14、串行口方式2接收到的第9位数据送_______寄存器的_______位中保存。 15、MCS-51内部提供_______个可编程的_______位定时/计数器,定时器有_______种工作方式。 16、一个函数由两部分组成,即______________和______________。 17、串行口方式3发送的第9位数据要事先写入___________寄存器的___________位。 18、利用8155H可以扩展___________个并行口,___________个RAM单元。 19、C语言中输入和输出操作是由库函数___________和___________等函数来完成。二、选择题 1、C语言中最简单的数据类型包括()。 A、整型、实型、逻辑型 B、整型、实型、字符型 C、整型、字符型、逻辑型 D、整型、实型、逻辑型、字符型 2、当MCS-51单片机接有外部存储器,P2口可作为 ( )。 A、数据输入口 B、数据的输出口 C、准双向输入/输出口 D、输出高8位地址 3、下列描述中正确的是()。 A、程序就是软件 B、软件开发不受计算机系统的限制 C、软件既是逻辑实体,又是物理实体 D、软件是程序、数据与相关文档的集合 4、下列计算机语言中,CPU能直接识别的是()。 A、自然语言 B、高级语言 C、汇编语言 D、机器语言 5、MCS-5l单片机的堆栈区是设置在( )中。 A、片内ROM区 B、片外ROM区 C、片内RAM区 D、片外RAM区 6、以下叙述中正确的是()。 A、用C语言实现的算法必须要有输入和输出操作 B、用C语言实现的算法可以没有输出但必须要有输入 C、用C程序实现的算法可以没有输入但必须要有输出 D、用C程序实现的算

单片机试题及答案

单片机原理与接口技术习题答案 习题与思考题1 1-1 微型计算机通常由哪些部分组成?各有哪些功能? 答:微型计算机通常由控制器、运算器、存储器、输入/输出接口电路、输入设备和输出设备组成。控制器的功能是负责从内部存储器中取出指令并对指令进行分析、判断、并根据指令发出控制信号,使计算机有条不紊的协调工作;运算器主要完成算数运算和逻辑运算;存储器用于存储程序和数据;输入/输出接口电路完成CPU与外设之间相连;输入和输出设备用于和计算机进行信息交流的输入和输出。 1-2 单片微型计算机与一般微型计算机相比较有哪些区别?有哪些特点? 答:与通用微型计算机相比,单片机的硬件上,具有严格分工的存储器ROM和RAM和I/O端口引脚具有复用功能;软件上,采用面向控制的指令系统和硬件功能具有广泛的通用性,以及品种规格的系列化。单片机还具备体积小、价格低、性能强大、速度快、用途广、灵活性强、可靠性高等特点。 1-3 简述计算机的工作过程。 答:计算机的工作是由微处理器以一定的时序来不断的取指令、指令译码和执行指令的过程。 1-4 单片机的几个重要指标的定义。 答:单片机的重要指标包括位数、存储器、I/O口、速度、工作电压、功耗和温度。 1-5 单片微型计算机主要应用在哪些方面? 答:单片机的主要应用领域有智能化产品、智能化仪表、智能化测控系统、智能化接口等方面。 1-6 为什么说单片微型计算机有较高的性能价格比和抗干扰能力? 答:因为单片微型计算机主要面向特定应用而设计,设计者在硬件和软件上都高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,具备较高的性能、价格比;单片机嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中,另外单片机体积小,可以放入屏蔽设备中,从而使其具有较高的抗干扰能力。 1-7 简述单片机嵌入式系统的定义和特点。 答:单片机嵌入式系统是嵌入到对象体系中的专用计算机系统;其特点是面向特定应用、与各个行业的具体应用相结合、硬件和软件高效率、软件固化在存储器芯片或单片机本身和不具备自举开发能力。 习题与思考题2 2-1 MCS-51单片机内部包含哪些主要功能部件?它们的作用是什么? 答:MCS-51单片机在一块芯片中集成了CPU、RAM、ROM、定时/计数器、多功能I/O口和中断控制等基本功能部件。 单片机的核心部分是CPU,CPU是单片机的大脑和心脏。 程序存储器用于存放编好的程序或表格常数。数据存储器用于存放中间运算结果、数据暂存和缓冲、标志位等。 定时/计数器实质上是加法计数器,当它对具有固定时间间隔的内部机器周期进行计数时,它是定时器;当它对外部事件进行计数时,它是计数器。 I/O接口的主要功能包括:缓冲与锁存数据、地址译码、信息格式转换、传递状态(外设状态)和发布命令等。 中断控制可以解决CPU与外设之间速度匹配的问题,使单片机可以及时处理系统中许多随机的参数和信息,同时,它也提高了其处理故障与应变能力的能力。 2-2 MCS-51单片机的核心器件是什么?它由哪些部分组成?各部分的主要功能是什么? 答:单片机的核心部分是CPU,可以说CPU是单片机的大脑和心脏。它由运算器、控制器和布尔(位)处理器组成。 运算器是用于对数据进行算术运算和逻辑操作的执行部件。

单片机题库及答案

单片机题库及答案 【篇一:单片机试卷及答案】 填空题(每空1分,共20分) 1、+1000001的反码是。十进制数-4的8位二进制补码是。 2、计算机所能执行的指令的集合称为。指令的编码规则称为,一般由和操作数两部分组成。 3、cpu一次可以处理的二进制数的位数称为cpu的。 4、当ea为电平时,cpu总是从外部存储器中去指令。 5、89c52单片机有6个中断源,其中内部中断源有个,外部中断源有个。 6、汇编指令中,对程序存储器的访问用指令来访问,外部ram用指令来访问。 7、c51的数据类型sfr占个字节,c51中整型变量占个字节。 8、指令mov 20h,#20h中,源操作数的寻址方式是,目的操作数的寻址方式是。 9、定时器t1方式2的8位常数重装初值存放于寄存器中。定时器t0方式0,寄存器用于存放计数初值的低5位。 10、多机通信中,主机的sm2= 。 11、eprom存储器27c256内部容量是32k字节,若不考虑片选信号,则对其内部全部存储单元进行寻址共需根地址线。 12、波特率倍增位位于特殊功能寄存器中。 13、8155a内部具有1个位减法定时器/计数器。 二、单项选择题(共20题,每题1分,共20分) 1、单片机的应用程序一般存放于()中 a、ram b、rom c、寄存器 d、cpu 2、定时器0工作于计数方式,外加计数脉冲信号应接到()引脚。 a、p3.2 b、p3.3 c、p3.4 d、p3.5 3、mcs51单片机在同一优先级的中断源同时申请中断时,cpu首先响应()。 a、外部中断0 b、外部中断1 c、定时器0 d、定时器1 4、adc0809是()ad的转换器件 a、4通道8位 b、8通道8位 c、4通道12位 d、8通道12位 5、执行中断返回指令后,从堆栈弹出地址送给() a、a b、ri c、pc d、dptr 6、串行通信中,发送和接收寄存器是()

51单片机基础知识试题题库(复习资料)

单片机原理与应用复习资料 第二章习题参考答案 一、填空题: 1、当MCS-51引脚ALE有效时〃表示从P0口稳定地送出了低8位地址。(备注:ALE 为地址锁存控制信号,书上P22) 2、MCS-51的堆栈是软件填写堆栈指针临时在片内数据存储器内开辟的区域。(p25 更具体些是在内部存储器的用户RAM区开辟的) 3、当使用8751且EA=1〃程序存储器地址小于1000H 时〃访问的是片内ROM。 4、MCS-51系统中〃当PSEN信号有效(备注:低电平为有效信号)时〃表示CPU要从外部程序存储器读取信息。(p22) 5、MCS-51有4组工作寄存器(p23 备注:称为通用寄存器或者工作寄存器)〃它们的地址范围是00H~1FH 。(延伸:通用寄存器占去32个单元,位寻址区占去16个单元,用户RAM区占去80个单元,三者总共为128个单元,组成内部数据存储器的低128单元区) 6、MCS-51片内20H~2FH(即为位寻址区)范围内的数据存储器〃既可以字节寻址又可 以位寻址。(p24) 7、PSW中RS1 RS0=10时〃R2的地址为12H 。 8、PSW中RS1 RS0=11时〃R2的地址为1AH 。(p27 查表2.3即可) 9、单片机系统复位后〃(PSW)=00H〃因此片内RAM寄存区的当前寄存器是第0 组〃8个寄存器的单元地址为00H ~ 07H 。(p27 参考下一题) 10、PC复位后为0000H 。(p38 查表2.6即可,有各种寄存器的初始化状态) 11、一个机器周期= 12 个振荡周期= 6 个时钟周期。(p37) 12、PC的内容为将要执行的下一条指令地址。(p30)

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

单片机试题及答案1

一、填空题 已知x的补码数10110111B,x的真值是___201D。 进制转换:134D=__10000110B;=______86H。 32K存储容量对应的地址范围从0000H-7FFFH_。 CPU与内存或I/O接口相连的系统总线通常由_控制总线__、数据总线__、地址总线___等三种信号组成。MCS-51单片机上电复位时PC=_0000_H,SP=_07_H;工作寄存器缺省采用第___________组,这组寄存器的地址范围是从______H~_____H。 MCS-51单片机系列有__5__个中断源,可分为___2__个优先级。上电复位时外部中断0__中断源的优先级别最高。 MCS-51单片机内部RAM共分为______2__个功能区,其高端128个字节的地址空间称为特殊功能寄存器_区,其中仅有________个字节有实际意义。 8255可编程芯片通常作为_并行接口_______扩展之用;8253可编程芯片通常作为_定时器_______扩展之用。8155可编程芯片通常作为_并行接口计数器和存储器______扩展之用;8279可编程芯片通常作为_键盘/显示控制器________扩展之用。 MCS-51 的并行I/O口信息有____读引脚________和____读锁存_________两种读取方法,读一改一写操作是针对并行I/O口内的锁存器进行的。 74LS273通常用来作为简单______输出__________接口扩展;而74LS244则常用来作为简单________输入_______接口扩展。 不带输入数据锁存器的D/A转换器,CPU必须通过______锁存或寄存__器件与D/A转换器传送数据;无三态输出功能的A/D转换器,应当通过_____三态___器件与CPU传送数据。 若用并行口来扩展一个有36只按键的行列式键盘,最少需__12_根I/O线。 74LS138是具有3个输入的译码器芯片,其输出作为片选信号时,最多可以选中___八_块芯片。 MCS-51单片机访问外存储器时利用_____ALE_______信号锁存来自_____P0_____口的低八位地址信号。在MCS-51系统中,当晶振频率采用12MHz时,一个机器周期等于_1__微秒。 8051的T0作为计数器用时,其计数频率不能超过晶振频率的___二十四分之一__。 二、选择题 通常所说的主机是指( C )。 (A)硬件和软件(B)CPU和磁盘存储器 (C)CPU和主存(D)运算器和控制器

单片机期末考试题试卷

单片机原理及应用试题三 一、填空题(每空1分,共10分) 1.当使用8031单片机时,需要扩展外部程序存储器,此时EA应为_________。 2.P0通常用作_________。 3.若由程序设定RS1、RS0=10,则工作寄存器R0~R7的直接地址为_________。 4.返回地址(或断点)是_________的程序计数器的内容。 5.中央处理器CPU是单片机的核心,它完成_________。 6.单片机的工作过程,实际上就是_________。 7.所谓中断源即是_________。 8.端口(或称口)是_________。 9.异步串行近程通信时的传送信号是_________。 10.若累加器A中的数据为01110010B,则PSW中的P=_________。 二、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题1分,共10分) 1.MCS—51单片机的复位信号是( )有效。 A.高电平 B.低电平 C.脉 冲 D.下降沿 2.若MCS-51单片机使用晶振频率为6MHz时,其复位持续时间应该超过( )。 A.2μs B.4μs C.8μs D.1ms 3.若PSW.4=0,PSW.3=1,要想把寄存器R0的内容入栈,应使用( )指令。 A.PUSH R0 B.PUSH @R0 C.PUSH 00H D.PUSH 08H 4.能够用紫外光擦除ROM中程序的只读存储器称为( )。

A.掩膜 ROM B.PROM C.EPROM D.EEPROM 5.在片外扩展一片2764程序存储器芯片要( )地址线。 A.8根 B.13根 C.16 根 D.20根 6.定时器/计数器工作方式1是( )。 A.8位计数器结构 B.2个8位计数器结构 C.13位计数结构 D.16位计数结构 7.设MCS-51单片机晶振频率为12MHz,定时器作计数器使用时,其最高的输入计数频率应为( ) A.2MHz B.1MHz C.500KHz D.250KHz 8.已知1只共阴极LED显示器,其中a笔段为字形代码的最低位,若需显示数字1,它的字形代码应为( )。 A.06H B.F9H C.30H D.CFH 9.下列数据字定义的数表中,( )是错误的。 A.DW“AA” B.DW“A” C.DW“OABC” D.DWOABCH 10.串行口的控制寄存器SCON中,REN的作用是( )。 A.接收中断请求标志位 B.发送中断请求标志位 C.串行口允许接收位 D.地址/数据位 三、简答题(每小题4分,共20分) 1.简述堆栈。 2.简述变址寻址方式并举例说明。 3.简述中断响应的主要内容。

单片机考试试题(带答案)

一、选择题 访问片外数据存储器的寻址方式是( C ) A、立即寻址 B、寄存器寻址 C、寄存器间接寻址 D、直接寻址 堆栈数据的进出原则是( B ) A、先进先出 B、先进后出 C、后进后出 D、进入不出 若某存储器芯片地址线为12根,那么它的存储容量为( C ) A、1KB B、2KB C、4KB D、8KB 控制串行接口工作方式的寄存器是( C ) A、TCON B、PCON C、SCON D、TMOD 判断是否溢出时用PSW的(B )标志位,判断是否有进位时用PSW的( A )标志位。 A.CY B.OV C.P D.RS0 E.RS1 当串行口向单片机的CPU发出中断请求时,若CPU 允许并接受中断请求时,程序计数器PC的内容将被自动修改为( E )。 A.0003H B.000B C.0013H D.001BH E.0023H 子程序的返回和中断响应过程中的中断返回都是通过改变PC的内容实现的,而PC内容的改变是(D )完成的。 A.通过POP命令B.通过MOV 指令C.通过RET或RETI指令D.自动 单片机复位后,SP、PC、I/O口的内容为(C )A.SP = 07H PC = 00H P0 = P1 = P2 = P3 = FFH B.SP = 00H PC = 0000H P0 = P1 = P2 = P3 = 00H C.SP = 07H PC = 0000H P0 = P1 = P2 = P3 = FFH D.SP = 00H PC = 00H P0 = P1 = P2 = P3 = 00H 堆栈指针SP的作用是( B )。 A 指示堆栈的栈底 B 指示堆栈的栈顶 C 指示下一条将要执行指令的地址 D 指示中断返回的地址 下列指令中,不影响堆栈指针的指令是( B)。 A RET B JB bit,rel C LCALL addr16 D RETI 定时器T1的中断入口地址是( C ),从该地址开始一般可(F )。 A 0003H B 000BH C 001BH D 0013H E 连续存放中断服务程序 F 存放转移指令定时器T0的溢出标志TF0,在CPU响应中断后( B )。 A 由软件清零 B 由硬件清零 C 随机状态 D AB都可以 在进行串行通信时,若两机的发送与接收可以同时进行,则称为(D )。 A 半双工传送 B 单工传送 C 双工传送 D 全双工传送 在CPU内部,反映程序运行状态或反映运算结果一些特征的寄存器是(B )。 A . PC B. PSW C. A D. SP 二、填空题 晶振的频率为6MHz时,一个机器周期为(2)μS。 欲使P1口的低4位输出0,高4位不变,应执行一条(ANL P1,#0F0H )命令。 MCS-51单片机系列有( 5 )个中断源,可分为( 2 )个优先级。 计算机三大总线分别为(数据总线)、(地址总线)和控制总线。 MCS-51指令系统中,ADD与ADDC指令的区别是(是否带进位)。 8051单片机有( 2 )个16位定时/计数器。MCS-51单片机有(4 )个并行输入/输出口,当系统扩展外部存储器或扩展I/O口时,(P0 )口作地

单片机原理与C51语言程序设计与基础教程 课后习题答案

单片机原理与C51语言程序设计与基础教 程课后习题答案 习题 填空题 1.一般而言,微型计算机包括、、、四个基本组成部分。 2.单片机是一块芯片上的微型计算机。以为核心的硬件电路称为单片机系统,它属于地应用范畴。 3.Atmel 公司生产的CMOS型51系列单片机,具有内核,用 代替ROM作为程序存储器, 4.单片机根据工作温度可分为、和三种。民用级的温度范围是0℃一70℃,工业级是-40℃~85℃,军用级是-55℃-125℃(不同厂家的划分标推可能不同。 5.在单片机领域内,ICE的含义是。 选择题 1.单片机的工作电压一般为V? A 5V B 3V C 1V D 4V 2.单片机作为微机的一种,它具有如下特点: A 具有优异的性能价格比 B 集成度高、体积小、可靠性高 C 控制功能强,开发应用方便 D 低电压、低功耗。 3.民用级单片机的温度范围是: A -40℃~85℃ B 0℃一70℃ C -55℃-125℃ D 0℃一50℃ 4.MCS-51系列单片机最多有个中端源。 A 3 B 4 C 5 D 6 5.下列简写名称中不是单片机或单片机系统的是 A MCU B SCM C ICE D CPU 问答题 1.单片机常用的应用领域有哪些? 2.我们如何学习单片机这么技术? 3.单片机从用途上可分成哪几类?分别由什么用处? 答案

填空题 1.运算器、控制器、存储器、输入输出接口 2.单片机嵌入式系统 3.MCS-51 Flash ROM 4.民用级(商业级) 工业级军用级 5.在线仿真器 选择题 1.A 2.ABCD 3.B 4.C 5.D 问答题 1.单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴: (1)在智能仪器仪表上的应用 单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。例如精密的测量设备(功率计,示波器,各种分析仪)。 (2)在工业控制中的应用 用单片机可以构成形式多样的控制系统、数据采集系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。 (3)在家用电器中的应用 可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭褒、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。 (4)在计算机网络和通信领域中的应用 现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。 (5)单片机在医用设备领域中的应用 单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。 此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。 2.首先,大概了解单片机的机构,例如本书的第2章则是主要讲了单片机的内部结构以及资源。对单片机的内部结构有了初步了解之后,读者就可以进行简单的实例练习,从而加深对单片机的认识。 其次,要有大量的实例练习。其实,对于单片机,主要是软件设计,也就是编程。目前最流行的用于51系列单片机地编程软件是Keil。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。掌握这一软件的使用对于使用51系列单片机的爱好

相关文档