单片机上机试题Word文件下载.docx
- 文档编号:5789799
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:52
- 大小:63.60KB
单片机上机试题Word文件下载.docx
《单片机上机试题Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机上机试题Word文件下载.docx(52页珍藏版)》请在冰点文库上搜索。
ADD1:
MOVR3,#00H
MOVR4,#00H
MOVR2,#8
MOVR0,#60H
LOOP:
MOVA,R4
ADDA,@R0
MOVR4,A
CLRA
ADDCA,R3
MOVR3,A
INCR0
DJNZR2,LOOP
SJMP$
4已知数据0~9的平方,设变量x的值在工作寄存器R0中,查表后求x2的值放回累加器,试编制程序。
MOVA,R0
MOVDPTR,#TABLE
MOVCA,@A+DPTR
SJMP$
TABLE:
DB00H,01H,04H,09H,16H,25H,36H,49H,64H,81H
END
5.用程序实现c=a2+b2。
设a、b均小于10,a存在片内RAM31H单元中,b存在32H单元中,把c存入33H单元中。
MOVSP,#60H
MOVA,31H
LCALLSQR
MOVR1,A
MOVA,32H
ADDA,R1
MOV33H,A
L:
SJMPL
;
子程序
SQR:
MOVDPTR,#TAB
RET
TAB:
DB0,1,4,9,16,25,36,49,64,81
6.P1.0~P1.3为输出口,P3.0~P3.3为输入口,使LED灯显示开关的状态。
L1:
MOVC,P3.0
MOVP1.0,C
MOVC,P3.1
MOVP1.1,C
MOVC,P3.2
MOVP1.2,C
MOVC,P3.3
MOVP1.3,C
SJMPL1
7.使用外部中断0,以P1口的8个LED灯显示外部中断次数。
每中断一次,LED指示灯显示按照二进制加1。
同时,采用P3.4~P3.7控制4个LED灯进行“跑马灯”循环显示,来模拟CPU执行主程序。
LJMPMAIN
ORG0003H;
中断入口
LJMPINTN0
ORG0030H
MAIN:
MOV30H,#00H;
计中断次数,开始清零
SETBEX0;
允许INT0中断
SETBIT0;
边沿触发方式
SETBEA;
开中断
MOVP1,#0FFH;
P1口指示灯初始状态
;
----------模拟主程序-------------------------
LOOP1:
MOVA,#0EFH
LOOP:
MOVP3,A
LCALLDELAY;
延时0.25S
RLA
JBACC.0,LOOP
SJMPLOOP1
-------中断服务程序---------------------
INTN0:
PUSHACC;
保护现场
INC30H;
中断次数加1
MOVA,30H
CPLA
MOVP1,A;
点亮指示灯
POPACC;
恢复现场
RETI;
中断返回
-------------------------------------------------------------
DELAY:
MOVR5,#04H;
延时子程序
DL1:
MOVR6,#0
DL2:
MOVR7,#0
DJNZR7,$
DJNZR6,DL2
DJNZR5,DL1
RET
•8.P1口接有8个发光二极管,编程使8个指示灯轮流点亮,每个灯亮0.25s,单片机晶振为12MHz。
•分析:
fosc=12MHz,1M=1μs
•16位定时器最大定时时间:
•t=(216-初值)×
机器周期
•=(65536-0)×
1μs=65.5ms
•0.25s=5×
50ms
•定时50ms初值:
•50×
103=65536-初值;
•初值=15536=3CB0H
AJMPMAIN
ORG000BH;
AJMPINTT0
ORG0030H;
主程序
MOV31H,#0FEH
MOVP1,31H;
置第一个LED亮
MOVTMOD,#01H;
T0工作于定时方式1
MOVTH0,#3CH
MOVTL0,#0B0H;
定时50ms
SETBTR0;
启动T1工作
SETBET0;
允许T1中断
SETBEA
MOV30H,#00H;
软件计时单元
WAIT:
SJMPWAIT;
等待中断
INTT0:
MOVTH0,#3CH;
中断服务程序
MOVTL0,#0B0H;
重装计数初值
计时单元加1
CJNEA,#05H,L1;
0.25S到?
计时单元清0
MOVA,31H
RLA;
左移一位
MOV31H,A
MOVP1,A;
下一个发光二极管亮
L1:
RETI;
•9.P1口接有8个发光二极管,使用T1作为计数器,计外部脉冲的个数,每计3个脉冲产生中断,利用LED指示灯显示中断的次数。
ORG001BH;
T1中断入口
AJMPINTT1
MOVTMOD,#60H;
T1工作于计数方式2
MOVTH1,#253;
T1计数初值(256-3)
MOVTL1,#253
SETBTR1;
SETBET1;
中断次数计数单元清零
-------------------------------;
INTT1:
INC30H;
次数单元加1
MOVA,30H
MOVP1,A
10.方式0数据发送的设计
查询方式:
MOVSCON,#00H;
串口方式0
MOVSBUF,#0fH;
发送数据
JNBTI,L1;
等待串口方式完毕
CLRTI;
清发送中断标志
采用中断方式
ORG0023H;
串口中断向量入口
LJMPUARTINT
MOVSP,#60H
SETBES;
允许串口中断
MOVSBUF,#0f0H;
UARTINT:
CLRTI;
RETI
11.让P1口灯轮流亮起来
•ORG0000H
•LJMPMAIN
•ORG0030H
MOVA,#0FEH;
初始值
MOVSCON,#00H;
•L1:
MOVSBUF,A;
发送数据
•JNBTI,$;
发送完毕?
•CLRTI
•LCALLDLEAY;
延时0.3S
•RLA;
左移1位
•JBACC.7,L1;
8位循环完毕?
•L2:
MOVSBUF,A;
•JNBTI,$
延时
•RRA;
右移1位
•JBACC.0,L2;
•SJMPL1;
重新开始
•DLEAY:
MOVR7,#03H
MOVR6,#0
MOVR5,#0
DJNZR5,$
DJNZR6,DL2
DJNZR7,DL1
•12.在某控制系统中有甲、乙两个单片机,甲单片机首先将P1口上拨动开关状态发送给乙单片机。
乙单片机将接收的数据输出至P1,点亮相应端口的LED。
设串口波特率采用9600(实验台fosc=11.0592MHz),电路如图所示:
•
•方式1的波特率:
•B=T1的溢出率×
2SMOD/32
=2SMOD/32×
fosc/(12×
(256-TH1))
•取SMOD=0则:
9600=11.0592×
106/((12×
(256-TH1))×
32)
•TH1=253,串口禁止中断。
•定时器T1工作于方式2(8位自动重装初值),禁止中断。
MOVTMOD,#20H;
T1方式2
初值253,B=9600
MOVSCON,#40H;
串口方式1
MOVPCON,#00H;
SMOD=0
启动T1
LL:
MOVP1,#0FFH
MOVSBUF,P1;
JNBTI,$
CLRTI
SJMPLL
SETBREN;
允许串口接收
MOVP1,SBUF;
接收数据
JNBRI,$
CLRRI
13.P1口控制LED进行倒计时显示。
LJMP0030H
ORG000BH
LJMPINTT0
MOVTMOD,#01H
MOVTH0,#3CH
SETBTR0
SETBET0
MOV30H,#00;
计时单元清零
MOV31H,#09H;
初值
MOVA,31H
MOVCA,@A+DPTR
显示“9”
---------
INTT0:
MOVTH0,#3CH
MOVTL0,#0B0H
INC30H
CJNEA,#20,L2;
1S到?
MOV30H,#0;
DEC30H;
倒计时单元减1
CJNEA,#0FFH,L1;
9秒完成?
CLRTR0
SJMPL2
MOVDPTR,#TAB
MOVCA,@A+DPTR;
转换成七段码
L2:
RETI
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB80H,90H,88H,83H,0C6H,0A1H,86H,8EH;
共阳极7段码表
14.在LED显示器上显示“12345678”
使用P1口作段口、P3口作位口
---------------------------------------------
74LS138:
C-->
P27,B-->
P26,A-->
P25,Y7-->
8255CS,A1A0-->
A1A0
MOVR0,#30H;
显示缓冲器首址
MOVA,#01
MOVR7,#08;
8个LED
CHU:
MOV@R0,A
INCA;
送入12345678
INCR0
DJNZR7,CHU
-------------------
MOVDPTR,#7FFFH;
8255初始化
MOVA,#10000000H;
控制字
MOVX@DPTR,A
STAR:
LCALLDISP
AJMPSTAR
-------------------------
DISP:
MOVR0,#30H;
MOVR3,#01H;
位码
MOVR7,#08H;
DIR1:
MOVA,@R0;
取显示数据
MOVDPTR,#TAB;
7段码表
MOVCA,@A+DPTR;
查表求得7段码
MOVDPTR,#7FFCH
MOVX@DPTR,A;
7段码送段口
MOVA,R3;
INCDPTR
位码送位口
LCALLDL1;
延时1ms
位码左移
MOVR3,A
INCR0;
指向下一位
DJNZR7,DIR1;
8位显示完毕?
MOVDPTR,#7FFCH;
段口
MOVA,#00H;
暗码
MOVX@DPTR,A;
关显示
-----------------------
------------------------
MOVR6,#02H;
1ms延时
DL11:
MOVR5,#248
DJNZR6,DL11
•15YE_JING.ASM
-----------------------------------------------------------------------
E=P10RW=P11RS=P12I/O操作
COMEQU27H;
命令寄存器单元
TIMEEQU30H;
延时单元
-------------------------------------
HANG1EQU80H;
液晶第一行
HANG2EQU90H;
液晶第二行
HANG3EQU88H;
液晶第三行
HANG4EQU98H;
液晶第四行
------------------------------------
EEQUP1.0
RWEQUP1.1
RSEQUP1.2
AJMP0030H
LCALLINI;
初始化
---------------------------
MAIN1:
MOVCOM,#HANG1;
第1行
MOVDPTR,#WEL_1
LCALLW_LINE
MOVCOM,#HANG2;
第2行
MOVDPTR,#WEL_2
MOVCOM,#HANG3;
第3行
MOVDPTR,#WEL_3
MOVCOM,#HANG4;
第4行
MOVDPTR,#WEL_4
--------------------------
LJMPSTAR
----------------------------
W_LINE:
MOVA,COM
LCALLSEND_I;
写行
MOVR2,#16;
16个
W_L1:
MOVA,#00H
取数据
LCALLSEND_D
DJNZR2,W_L1
-----------------------------------------------------
INI:
MOVA,#33H;
基本指令,8bit模式,基本指令
LCALLSEND_I
LCALLDELAY
MOVA,#0cH;
显示开,游标关,反白关
MOVA,#01H;
清除显示
MOVA,#06H;
进入设定点,游标右移,画面不移动
MOVR7,#6;
延时3ms
D2:
MOVR6,#248
DJNZR6,$
DJNZR7,D2
WEL_1:
DB'
山东理工大学'
WEL_2:
电气电子工程学院'
WEL_3:
单片机互动教学室'
WEL_4:
DTS-A教学平台'
-----------------------------
发送数据子程序
-----------------------------
SEND_D:
LCALLCHK_BUSY;
检测模块内部工作状态
SETBRS;
RS=1选择数据寄存器
CLRRW;
RW=0写状态
MOVP0,A;
送数据到数据口
SETBE
NOP
CLRE
----------------------
发送指令子程序
----------------------
SEND_I:
CLRRS;
RS=0选择指令寄存器
测忙碌子程序
CHK_BUSY:
MOVP0,#0FFH
SETBRW;
RW=1读状态
JBP0.7,$;
判别BF位
--------------------
16.8255做显示器接口
1、设计8255的译码电路;
•2、确定8255的端口地址;
•3、在LED显示器上显示“12345678”
MOVA,#00H
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 上机 试题
![提示](https://static.bingdoc.com/images/bang_tan.gif)