单片机实验(前七个实验) - 2009915225523
更新时间:2023-03-13 02:40:01 阅读量: 教育文库 文档下载
- 单片机七段显示器实验推荐度:
- 相关推荐
实验一 清零程序
一、 实验目的
掌握汇编语言设计和调试方法,熟悉键盘操作。
二、 实验内容
把7000H—70FFH的内容清零。
三、 实验程序框图
开始
RO=00H
00送到7000H
DPTR+1,R0+1
Y N
R0-1=0?
Y
结束
四、 实验步骤
1、 当DVCC单片机仿真实验系统独立工作时
(1) 将固化区EPROM中实验程序目标码传送到仿真RAM区,操作如下:
输入0后按F1键,再输入0FFF后按F2键,再输入0后按EPMOV稍等,系统返回初始状态,显示“P”。
(2) 通过键盘输入实验程序的起始地址0030H,再按执行键区EXEC,表示
连续运行该程序,稍候,按RESET键退出运行;如果以单步运行程序,则输入0030H后,按STEP,按一次执行一条语句,直到执行到003CH为止,按MON键退出运行;如果以断点运行程序,则先输入003CH(断点地址),再按F1键,再输入0030(起始地址),然后按EXEC键执行程序,当执行到003CH时自动停下来,此时按MON键退出。
(3) 用存储器读写方法检查7000H~70FFH中的内容应全是00H(实验箱
初始化显示“P.”时,输入7000,按下MEM键,显示器上即可显示7000这个存储单元的内容)。
2、
当DVCC仿真实验系统联PC机时
(1) 在闪动“P.”状态,按PCDBG键
(2) 在PC机处于在WIN2000/XP软件平台下,点击DVCC实验系统图标 (3) 系统进入51动态调试状态,如图1.1所示
图1。1
(4) 点击连接DVCC实验系统(CTRL+H)
(5) 装载目标文件(CTRL+L)
(6)
从起始地址开始连续运行程序(F9)
(7) 连续运行完成后,在存储器窗口内检查7000H~70FFH中的内容是否
全为00H。
五、 思考
假使要把7000~70FFH中的内容改成FF,如何编制程序。
源文件名:CLEAR.ASM ORG 0030H CLEAR: MOV R0,#00H MOV DPTR,#7000H CLEAR1: CLR A MOVX @DPTR,A INC DPTR INC R0 CJNE R0,#00H,CLEAR1
SJMP CLEAR END
实验二 BCD码求和
实验源代码: ORG MOV MOV MOV MOV MOV MOV MOV MOV MOV BCDA: MOV MOV
ADD MOV MOV ADD MOV CLR C DEC DEC MOV ADDC DA MOV DJNZ SJMP END
00H R7,#03H R0,#30H R1,#34H 30H,#68H 31H,#55H 32H,#98H 34H,#55H 35H,#23H 36H,#64H A,R7 ;取字节数至R2中 R2,A A,R0 R0,A A,R2 A,R1 R1,A
;初始化数据指针
BCD1:
;高位字节相加
R0 R1 A,@R0 A,@R1 A @R0,A R2,BCD1 $
;调整数据指针
;按字节相加 ;十进制调整 ;和存回[R0]中 ;处理完所有字节
实验三 多路开关状态指示
1. 实验内容
AT89S51单片机的P1.0-P1.3接四个发光二极管L1-L4,P1.4-P1.7接了四个开关K1-K4,编程将开关的状态反映到发光二极管上。(开关闭合,对应的灯亮,开关断开,对应的灯灭)。 2. 电路原理图
C230pFC1C330pFU119XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD3938373635343332212223242526272810111213141516171uF18XTAL2C4910uFRSTR110k293031PSENALEEAR2R3R4R5220D1D2D3D4R6R7R8R9LED-YELLOW24681U2:AA0A1A2A3OE74LS240Y0Y1Y2Y31816141222022012345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51220K1K2K3K44.7k4.7k4.7k4.7k 3. 系统板上硬件连线
(1. 把“单片机系统”区域中的P1.0-P1.3用导线连接到“八路发光二极管指示模块”区
域中的L1-L4端口上; (2. 把“单片机系统”区域中的P1.4-P1.7用导线连接到“四路拨动开关”区域中的K1
-K4端口上; 4. 程序设计内容
(1. 开关状态检测
对于开关状态检测,相对单片机来说,是输入关系,我们可轮流检测每个开关状态,根据每个开关的状态让相应的发光二极管指示,可以采用JB P1.X,REL或JNB P1.X,REL指令来完成;也可以一次性检测四路开关状态,然后让其指示,可以采用MOV A,P1指令一次把P1端口的状态全部读入,然后取高4位的状态来指示。 (2. 输出控制
根据开关的状态,由发光二极管L1-L4来指示,我们可以用SETB P1.X和CLR P1.X指令来完成,也可以采用MOV P1,#1111XXXXB方法一次指示。
5.汇编源程序
方法一 ORG 00H
START: MOV A,P1 ANL A,#0F0H RR A RR A RR A RR A
ORl A,#0F0H MOV P1,A SJMP START END 方法二 ORG 00H
START: JB P1.4,NEXT1 CLR P1.0 SJMP NEX1
NEXT1: SETB P1.0 NEX1: JB P1.5,NEXT2 CLR P1.1 SJMP NEX2
NEXT2: SETB P1.1 NEX2: JB P1.6,NEXT3 CLR P1.2 SJMP NEX3
NEXT3: SETB P1.2 NEX3: JB P1.7,NEXT4 CLR P1.3 SJMP NEX4
NEXT4: SETB P1.3 NEX4: SJMP START END
实验四 子程序设计----BCD码转换为二进制
单字节可存放两位压缩BCD码(0—99) B=D1×10+D0(D1,D0为0—9) 十位 个位
单字节BCD码转换为二进制子程序
入口:(R0)= 压缩BCD码的地址 出口:(A)= 转换结果 DSFR::MOV A,@R0 ANL A,#0F0H ;取十位数 SWAP A ;变为标准BCD码 MOV B,#10 MUL AB ;(A)=D1×10 MOV R7,A ;D1×10暂存R7 MOV A,@R0
ANL A,#0FH ;取个位
ADD A,R7 ;A=D1×10+D0 RET
1、实验内容
四位压缩BCD码存在20H21H单元D=D3D2D1D0
D=D3×1000+D2×100+D1×10+D0
=(D3×10+D2) ×100+D1×10+D0
结果存放30H31H
R0,R1赋初值
调用DSFR子程序 ;求D3×10+D2
A×100结果存30H31H
INC R0 ACALL DSFR 结果加到30h31H
DSFR子程序 子程序设计要点:
子程序一般为多次返复使用的程序段,一般应说明入口条件,DSFR子程序的入口条件是:被转换为二进制的单字节BCD码为间接寻址,间接寻址寄存器为R0。要调用DFSR子程序必需先将压缩BCD码的存放地址赋与R0。而出口条件是指最后结果在哪儿存放。本子程序转换结果在ACC内。主程序调用子程序,在调试时一般要先调试子程序、再调试主程序。
2、实验步骤
1)打开PV32编程序。汇编正确进入调试界面。否则修改程序重新汇编直到通过。 2)打开DATD窗口给20H、21H、R6、R7赋值
3)单步调试DSFR子程序观察并记禄寄存器、内存的变化。判断程序是否正确。若发现问题重返编辑界面,修改、存盘、汇编。返回调试界面调试通过。
4) 设断点调试主程序观察并记禄寄存器、内存的变化。判断程序是否正确。若发现问
题重返编辑界面,修改、存盘、汇编。返回调试界面调试通过。 3.实验报告
1)写出主程序流程图、子程序流程图、程序清单 2)根据记渌数据给程序加注解 3)调试心得
实验五 数制转换子程序
单字节二进制数转换为三位数的BCD码 B=D2×100+D1×10+D0
单字节二进制数应转换为BCD子程序 入口: (A)= 二进制数
出口: (R0)= 十位数和个位数的地址
DRFS:MOV B,#100
DIV AB ;(A)= 百位数 MOV @R0,A ; 存入RAM单元 INC R0 MOV A,#10 XCH A,B
DIV AB ;(A)= 十位、(B)= 个位 SWAP A
ADD A,B ;个位、十位拼字 MOV @R0,A ;存入RAM RET END
1、实验内容 将FFH转换为压缩BCD码存入内部 RAM 20H.21H单元(高位在前) FFH送ACC R0赋初值20H 调用DRFS SJMP $ DRFS子程序
2、实验步骤
1)打开PV32编程序。汇编正确进入调试界面。否则修改程序重新汇编直到通过。
2)打开DATD窗口20H21H清零。
3)单步调试观察并记禄寄存器、内存的变化。判断程序是否正确。若发现问题重返编辑界面,修改、存盘、汇编。返回调试界面调试通过。
4)设断点调试、记禄结果。 3、实验报告
1)写出程序流程图、程序清单 2)根据记渌数据给程序加注解 3)调试心得
实验六 循环程序设计
1、实验内容:三字节加法
加数存放在内部RAM 20H21H22H,被加数存放在28H29H2AH,结果存放在28H29H2AH。多字节加法用 ADDC A,@R1 连续使用之三次。第一个字节使用时要先清进位位C第二、第三字节使用时需要调整加数、被加数的取数地址。连续取数或连续送数一般用间接寻址。间接寻址要先赋初值再使用,赋初值的语句要在循环体之外避免出现死循环。间接寻址地址调整用INC(连续增加),用DEC(连续减小)判断循环次数有多种方法:
1) DJNE R7,LOP ;R7内存循环次数,LOP为跳转地址。R7要先赋初值。 2) CJNE R7,#3,LOP 3) DEC R7
MOV A,R7 2、实验步骤
1)打开PV32编程序。汇编正确进入调试界面。否则修改程序重新汇编直到通过。 2)打开DATD窗口给加数、被加数赋值
3)单步调试观察并记禄寄存器、内存的变化。判断程序是否正确。若发现问题重返编辑界面,修改、存盘、汇编。返回调试界面调试通过。
4)设断点调试、记禄结果。
5)若将单字节加法作为子程序改写程序重新调试比较两种方法结果是否一致 3、实验报告
1)写出程序流程图、程序清单 2)根据记渌数据给程序加注解 3)调试心得
实验七 多重循环程序设计----闪烁灯
方法一
1.实验内容
在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。
2.电路原理图
C130pFC230pFX1U1CRYSTAL19XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617C31uF18XTAL2R110k9RSTR10270D8U2:A24681A0A1A2A3OE74LS240Y0Y1Y2Y318161412293031PSENALEEA12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.780C31 3.系统板上硬件连线
把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。
4.程序设计内容 (1). 延时程序的设计方法
作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是如何设计呢?下面具体介绍其原理: 石英晶体为12MHz,因此,1个机器周期为1微秒 机器周期 微秒
MOV R6,#20 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1
因此,上面的延时程序时间为10.002ms。
由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时,延时10ms,以此为基本的计时单位。如本实验要求0.2秒=200ms,10ms×R5=200ms,则R5=20,延时子程序如下: DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$
DJNZ R6,D2 DJNZ R5,D1 RET (2). 输出控制
当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。 5. 程序框图
开始
P1.0输出1,L1熄灭
延时0.2秒 P1.0输出0,L1 延时0.2秒 6. 汇编源程序 ORG 0000h START: CLR P1.0 LCALL DELAY SETB P1.0 LCALL DELAY LJMP START
DELAY: MOV R5,#20 ;延时子程序,延时0.2秒 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END
方法二
1、实验内容
1) 利用100毫秒为循环体,写一个1秒的三重循环程序
2) 写一个1毫秒的子程序,然后调用子程序写一个延时1秒的程序。 3) 如果单片机的机器周期为2个微秒改写程序。 2、实验原理
单片机每执行一条程序需要1--4个机器周 1秒定时子程序 期因此利用该性质可以实现软件定时。最筒单 的软件定时程序用NOP和DJNZ循环指令完成。 假定单片机的机器周期为1微秒则 R5,R6,R7赋初值 MOV R7,#O9H; 1 LOP:NOP; 1 DJNZ R7,LOP; 2 N 1毫秒到吗 RET; 2
T=1+9×3+2=30微秒 Y MOV R7,#250; 1
LOP:NOP; 1 恢复 R7初值 NOP; 1 N DJNZ R7,LOP; 2
0.1秒到吗 RET ; 2 T=1毫秒 每循环一次4微秒循环250次1毫秒 Y 此为单循环。
恢复R6初值 利用循环嵌套可以实现较长时间的定时
MOV R6,#100; 1 MOV R7,#250; 1 N 1秒到吗 LOP1:NOP NOP Y DJNZ R7,LOP1; T=1毫秒 Y RET MOV R7,#250; 1 DJNZ R6,LOP1; 2 RET; 2
将1毫秒作为循环体利用R6循环执行100次,执行时间为100毫秒。此为2重循环。注意内循环完成后R7=0,下次循环若还要执行250次R7必须重新赋值250,否则循环次数为256。 3、实验步骤
1)打开PV32编程序。汇编正确进入调试界面。否则修改程序重新汇编直到通过。 2)打开SFR窗口给R6、R7赋值
3) 设断点调试观察并记渌寄存器的变化。判断程序是否正确。 若发现问题重返编辑界面,修改程序重新汇编直到通过。 4)用子程序改写程序重新调试比较两种方法结果是否一致 4、实验报告
1.写出程序流程图、程序清单 2.根据记渌数据给程序加注解 3.调试心得
正在阅读:
单片机实验(前七个实验) - 200991522552303-13
知名校友简介09-27
基础知识必做题A01-01
不定代词用法一览表05-11
医院静脉输液自动监控系统的设计与实现07-23
高频振荡器与射随放大电路的研制 合肥学院06-03
航空港经济综合实验区规划工业道路工程环境影响报告表05-25
《最简单的有机化合物-甲烷》教学设计资料03-08
XXX生活污水处理厂设备维护作业指导书04-12
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 实验
- 单片机
- 2009915225523
- 酒店实习报告范文(共9篇)
- 2017产业转移到产业共建:内涵、特点及其逻辑
- 首届卫生监督技能竞赛考试试卷(含答案)
- 中南大学制造工程训练答案
- 全国防沙治沙综合示范区规划
- 机械设计课程设计系列 - 华中科技大学 - 二级展开式斜齿圆柱齿轮减速器
- 新人教版八年级数学下册培优辅导资料(全册)
- 塔里木油田2015井控复习题库
- 计量经济学
- 兰肥喜硕、植本和兰石植金石的用法,施肥,养兰的一把双刃剑
- 三年级晨诵儿童诗
- 一年级数学思维导图
- 10kv农网升级改造工程 - 监理规划
- 2017国考行测专项练习:数量关系
- 高三第一轮复习3 - 直线运动 教案03
- 20.3 中心对称与中心对称图形(第一课时)
- 《审计学原理》试题库答案
- 先学后教
- 节目串词
- 成都市建设工程安全文明施工评价得分及措施费费率核定表