INC R0 ;仍指向后数单元 L1: MOV A,@R0
DJNZ R3,L2 ;依次重复比较 JB 00H,SUB ;交换后重新比较 RET END
;结束
2、排序结果(抓图)。
程序开始前数据
程序执行后数据
六、配分、评分标准(参考)
实验三 I/O端口操作
一、实验目的:
1、掌握I/O端口读写等基本汇编指令;
2、掌握单片机最小系统硬件电路设计及仿真软件PROTEUS仿真、调试等基本操作方法。
二、实验仪器设备
1、PC机,1台 2、WAVE软件开发系统 3、仿真软件PROTEUS
三、实验内容:
编写一段汇编程序,使与单片机P0.3口相连的发光二极管循环点亮,亮灭时间必须大于0.5秒(肉眼能清晰分辨二极管的亮灭变化)。要求用PROTEUS软件完成仿真电路设计,并进行功能验证。
四、实验步骤:
1、使用Protues完成硬件仿真电路的绘制。
2、用WAVE软件完成发光二级管亮灭程序,用延时子程序设计一段时间延时,编译通过后生成16进制文件(.HEX),加载到PROTEUS中仿真验证。
五、实验报告
1、PROTEUS仿真效果图;
2、实验程序汇编指令及中文注释;
ORG 0000H ;伪指令 LJMP START ;跳转到START ORG 0030H ;伪指令
START : SETB P0.3 ;P0.3置1
ACALL DELAY ;调用延时 CLR P0.3 ;P0.3清零 ACALL DELAY ;调用延时 LJMP START ;跳转到START
DELAY: MOV R0,#05H ;延时程序 R0赋值5,下面程序走5遍就是0.5秒 LOOP1: MOV R1,#200 ;0.1秒的延时程序 LOOP2: MOV R2,#126 LOOP3: DJNZ R2,LOOP3 DJNZ R1,LOOP2 DJNZ R0,LOOP1
RET ;调用结束返回
SJMP $ ;死循环,防止程序跑飞 END ;结束
六、思考题:
单片机晶振设为12MHZ,试计算自己编写的延时子程序的精确延时时间?
实验四 定时中断
一、实验目的:
1、熟悉单片机定时器工作原理; 2、掌握定时器定时控制的编程方法。
二、实验基本原理
1、定时/计数器工作原理
INT1 引脚
图2.11 定时/计数器原理图
(1)定时时间的求取。
例:设单片机晶振频率为12MHZ,定时时间为1ms,求时间常数?
定时器计数周期=12/fosc=1us,1ms/1us=1000, 因此,计数初值=65535+1-1000=64536=FC18H (2)定时/计数器初始化
三、实验内容:
编写一段汇编程序,使单片机P1.0口输出一段时钟周期为2ms的方波。要求采用T1中断方式,工作方式1。用PROTEUS软件完成仿真电路设计,并用软件中自带的示波器观察输出结果。
四、实验操作步骤:
1、硬件电路设计
图2.12 硬件电路设计
2、单片机晶振频率为12MHZ,用WAVE软件编写P1.0引脚上输出周期为2ms的方波程序。编译通过后生成16进制文件(.HEX),加载到PROTEUS中仿真验证。
3、PROTEUS仿真验证。
五、实验报告
1、PROTEUS仿真效果图;
2、实验程序汇编指令及中文注释;
ORG 0000H SJMP START ORG 0013H LJMP IOP0 ORG 0030H START: MOV SP,#60H MOV TMOD ,#10H START
T1计时器中断入口地址 ;跳转到IOP0 ;伪指令
;将堆栈指针放到60H处
;T1计时器工作方式1
;伪指令 ;跳转到 ;伪指令,
MOV TH1 ,#0FCH ;赋初值 MOV TL1 ,#18H SETB P1.0
;P1.0置1
SETB EA ;打开中断允许总控制位 SETB TR1 ;启动计时器T1
SETB ET1 ;打开定时器1的中断允许控制位
IOP0: CLR EA ;关闭中断
MOV TH1 ,#0FCH ;重新赋初值 MOV TL1 ,#18H
CLR P1.0 ;P1.0清零 SETB EA ;打开中断开关 RETI ;调用结束 END ;结束
六、配分、评分标准(参考)
实验五 十字路口交通灯
一、实验目的:
1、掌握ISP在线调试的方法; 2、掌握硬件实验箱的使用方法; 3、熟悉汇编程序基本格式与编程方法。
二、实验仪器设备:
1、PC机
2、PROTEUS仿真环境。
三、实验内容:
编写十字路口交通灯控制程序,控制红、黄、绿交通指示灯的亮灭,模拟十字路口交通灯控制。参考程序如下:
PORT EQU 0CFA0H ;片选地址CS0 CSEG AT 0000H LJMP START CSEG AT 4100H
START: MOV A,#11H ;两个红灯亮,黄灯、绿灯灭 ACALL DISP
;调用273显示单元(以下雷同)
ACALL DE3S ;延时3秒
LLL: MOV A,#12H ;东西路口绿灯亮;南北路口红灯亮 ACALL DISP
ACALL DE10S ;延时10秒
MOV A,#10H ;东西路口绿灯灭;南北路口红灯亮 ACALL DISP
MOV R2,#05H ;R2中的值为黄灯闪烁次数
TTT: MOV A,#14H ;东西路口黄灯亮;南北路口红灯亮 ACALL DISP
ACALL DE02S ;延时0.2秒
MOV A,#10H ;东西路口黄灯灭;南北路口红灯亮 ACALL DISP
ACALL DE02S ;延时0.2秒
DJNZ R2,TTT MOV A,#11H ACALL DISP
ACALL DE02S MOV A,#21H ACALL DISP
ACALL DE10S MOV A,#01H ACALL DISP
MOV R2,#05H GGG: MOV A,#41H ACALL DISP
ACALL DE02S MOV A,#01H ACALL DISP
ACALL DE02S DJNZ R2,GGG MOV A,#03H ACALL DISP
ACALL DE02S JMP LLL ;返回TTT,使东西路口;黄灯闪烁五次 ;两个红灯亮,黄灯、绿灯灭 ;延时0.2秒