JMP MAIN END
编译文件调入单片机,显示如下:
D. 将程序改为
ORG 0000H AJMP MAIN
MAIN: MOV P0,#65H JMP MAIN END
编译文件调入单片机,显示如下:
E. 将程序改为
ORG 0000H AJMP MAIN
MAIN: MOV P2,#0fH JMP MAIN END
编译文件调入单片机,显示如下:
F. c语言编写的程序
#include void main(void) {
while(1) {
P0=0x0f; } }
新建工程,加入.c文件,编译文件后调入单片机,显示如下:
5. 实验中的问题总结 1) 下载器无法正常工作 2) 烧录软件不匹配 6. 实验心得体会
这次实验是通过观看老师的指导录像自己操作完成的, 此次实验也让我掌握了KEIL C软件对程序进行编译调试及烧录软件的使用方法,并掌握了各种类型文件的区别.
而在实验过程中遇到的最大问题是下载器无法正常连接与烧录软件无法正常工作,遇到问题后我先是检查各种软件是否安装正确,检查无误后我就请教其他人,有人说是驱动问题,但我不会解决,最后我去请教学长,学长帮我一遍遍实验,最后单片机终于可以正常工作!这个问题的解决让我明白:遇到问题一定要坚持不懈,不断地尝试才能解决问题!
实验二、基本控制语句应用
——简单广告牌霓虹灯设计
1. 内容提要:
1) 汇编语言控制语句应用。
2) 程序的循环、子程序调用、程序跳转等。 3) 单片机基本I/O口的驱动方式、特点等。
2.实验目的及要求:
1) 理解左移RL、右移RR概念。
2) 延时程序DELAY的具体执行过程、延时量控制等。 3) 掌握通过设置程序的跳转来实现程序循环的方法。
3.实验源程序及流程图:
ORG 0000H AJMP MAIN
MAIN: MOV P0,#00H MOV A,#01H LOOP: MOV P0,A RL A
JMP LOOP END
开始 P0及累加器A初始化A内容赋予P0 A内容左移 跳转至LOOP
4.实验的实施:
1) 实验前准备:基础知识的统计学习
结束 A. 左移RL与右移RR: 在汇编中RR和RL都是移位类指令,位
移类指令只能对累加器A进行移位, RR A 是指使累加器A内各位向右环移一位,例如累加器A原来各位为01111111,运行 RR A语句后,累加器A各位就变为10111111。
RL A 是指使累加器A内各位向左环移一位,例如累加器A原来各位为11111110,运行 RL A语句后,累加器A各位就变为11111101。
B. 为什么加入延时程序DELAY: 因为p0口变化速度太快,人眼
无法捕捉信息观察变化,加入延时程序,加长了执行时间,使其变化速度减慢,而便于观察!
C. DELAY的具体执行过程:
DELAY:MOV R2,#10H 对R2赋初值10H(十进制16) LOOP1:MOV R1,#0FFH 对R1赋初值FFH(十进制255) LOOP2:DJNZ R1,LOOP2 R1循环减一,直至为零
DJNZ R2,LOOP1 R2减一,不等于一时跳到LOOP1,直至R2为零 RET 子程序结束
D. 如何控制延时量:通过跳整R1与R2的初值调控延时变量。 E. 怎样设置程序的跳转来实现程序循环:通过插入子程序调用
函数跳转实现循环。
F. 对源程序的相关阐释:
ORG 0000H 定义程序起始地址
AJMP MAIN 直接跳到main(主程序)
MAIN: MOV P0,#00H 对p0口初始化 MOV A,#01H 给A一个初值
LOOP: MOV P0,A 把A的初值给p0口
RL A 左移指令,对A内的初值进行左移 JMP LOOP 跳转到LOOP