单片机原理应技术实验报告
实验题目: Keil软件汇编语言编程
姓名: * * *
学号: ********
实验日期: 2017
指导教师:
1Keil软件简介
11 Keil uVision4简介
新Keil uVision4 IDE旨提高开发员生产力实现更快更效程序开发
uVision4引入灵活窗口理系统够拖放视图方包括支持显示器窗口
uVision4μVision3 IDE基础增加更众化功:
· 显示器灵活窗口理系统
· 系统浏览器窗口显示设备外设寄存器信息
· 调试原视图创建保存调试窗口布局
· 项目工作区简化众项目
12 Keil uVision4
①开Keil 4应软件初始界面:
②点击菜单项ProjectNew uVisionProject图示
③选择文件夹输入工程名
④输入工程名保存会弹出选择芯片界面
⑤里选择Atmel公司AT89S51单片机选择点击OK创建完工程
⑥单击点击图示圆圈圈起部分建立文件点击菜单File面NEW新建文件
⑦输入程序代码单击File—Save as根代码语言格类型保存缀asm(汇编语言)c(C语言)文件
⑧单击Target1前面+号鼠标右键点击SourceGroup1界面图10示鼠标左键点击Add Files to Group Source Group1刚刚代码文件添加工程点击左角编译钮完成编译进行程序调试
2实验容
汇编语言完成课P95(2)(5)(8)三道题跑马灯程序
21 P95(2)
设部RAM 5AH单元中变量X请编写计算述函数式程序结果存入5BH
设计思路:显然题分支语句妨JZ JNB等通X10X15综合判断X处区间
代码:
ORG 0000H
JMP START
ORG 1000H
START MOV A 5AH 直接寻址5AH址数X存入寄存器A
MOV B 5AH 直接寻址5AH址数X次存入寄存器B
SUBB A #0FH A中数X先减15初步判断X属区间
JNB ACC7 DO3 A第7位1(X>15)程序跳DO3否序执行
MOV A 5AH X15次X存入累加器A中
CLR C 清零进位C
SUBB A #0AH X减10
JNB ACC7 DO1 A第7位1(X>10)跳DO1
JMP DO2 剩情况:X<10跳DO2
DO1MOV A 5AH 10
ADD A #08H X*X+8→A
MOV 5BHA X*X+8→B
JMP DONE 跳程序结束段
DO2MOV A5AH X<10
MUL AB X*X→A
CLR C 进位C清零
SUBB A #01H X*X1→A
MOV 5BHA X*X1→B
JMP DONE 跳程序结束段
DO3MOV A #29H 41→A
MOV 5BH A 41→B
JMP DONE 跳程序结束段
DONESJMP
END
程序截图:
程序结果:
①X12时Y12*12+8152
②X8时Y8*8163
③X18时Y41
22 P95(5)
设两长度均15数组分存放2000H2100H首存储区中试编程求应项结果存放2200H首存储区中
设计思路:题需LOOP进行15次求存放址高应采DPTR进行访问
代码:
ORG 0000H
JMP START
ORG 1000H
START
MOV R1#00H 求寄存器初始清零
MOV R2#0FH 循环次数15次
MOV DPL#00H 类似段偏移址址
LOOP MOV DPH#20H DPTR高八位理解段址里先指第数组首
址2000H
MOVX A@DPTR A←((DPTR))
MOV R1A R1←(A)
INC DPH DPH改成指高8位21H存储区
MOVX A@DPTR A←((DPTR))
ADD AR1 两数组应项求
INC DPH DPH改成指高8位22H存储区
MOVX @DPTRA 求结果送入述址区
INC DPL 低8位址增
DJNZ R2LOOP 循环次数10跳转LOOP处进行循环
END
程序截图:
程序结果:
首先分2000H2100H存入15数里存入123…1415
结果:
23 P95(8)
片外数存储器址1000H~1030H数块全部搬迁片RAM 30H~60H中原数块区域全部清零
设计思路:显然LOOP进行搬迁搬完清零原址数DPTR访问片外存储器
代码:
ORG 0000H
JMP START
ORG 1000H
START MOV R1#30 R1保存循环次数 30次
MOV R0#30H 址30H存入R0中
MOV DPTR#1000H 1000H址存入DPTR中
LOOP MOVX A@DPTR 寄存器间接寻址A←((DPTR))
MOV @R0A (R0)←A
CLR A A←0
MOVX @DPTR A 原址数清零
INC R0 数写入址 增
INC DPTR 数读取址 增
DJNZ R1LOOP 循环次数10跳转LOOP处进行循环
END
程序截图:
程序结果:
先片外存储器1000H开始存入数
接开始数搬迁片30H开始区域中
原址数次清零
24 P95(8)
题目:设计6+5056ms跑马灯P1端口显示
设计思路:首先设计56ms延迟里已知单片机系统振荡频率fosc12MHz时机器周期1T1us执行条DJNZ指令需2机器周期执行条NOP需机器周期执行条MOV机器周期 接着通循环左移指令RL A实现跑马等效果
代码:
ORG 0000H
JMP START
ORG 0800H
STARTMOV A#01H 0000 0001存入A面会右边1循环左移
SJMP DELAY 进入延时段起点
LOOP
RL A 处开始跑马灯模块先A循环左移
MOV P1A A值赋端口P18位
SJMP DELAY 56ms延迟程序段跑遍
DELAY MOV R7 #224 设置外循环次数224次
DLY1 MOV R6 #123 设置循环次数123次
DLY2 DJNZ R6 DLY2
NOP
DJNZ R7 DLY1 延时程序段结束总时(123*2+2+1+1)T*224T+2T+1T56ms
SJMP LOOP
SJMP
END
程序截图:
程序结果:
初始状态
执行次56ms延迟左移
次56ms延迟左移
Proteus仿真截图:
3实验心
通4实验学会KEIL软件创建工程创建添加项目编译调试等等更重学单片机编程方面汇编语言实现数传送运算移位等时简单程序设计分支程序循环程序等等
实验更底层解单片机系统运行机制尤汇编语言更提高类端口存储器运水方面感受汇编语言然十分直接面型程序项目显力心体现期实验C语言编写简便性
想通更运类指令更端口元件综合会变越越熟练断提升逻辑思维
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档