当前位置:文档之家› 哈工大威海 单片机实验报告

哈工大威海 单片机实验报告

哈工大威海   单片机实验报告
哈工大威海   单片机实验报告

单片机实验报告

学号:100250212

姓名:

指导教师:

实验二

一、 实验目的

1 、 进一步了解开发系统的功能和使用;

2 、 了解程序设计与调试的基本过程;

3 、 了解简单程序和分支程序程序的特点和设计。

二、 实验内容

1 、 简单程序的设计、输入、调试和运行;

2 、 分支程序的设计、输入、调试和运行;

三、 实验步骤

1、设计、调试双字节乘法程序,功能为:(R2R3)*(R6R7)→R4R5R6R7 输入设计好的程序检查无误后,汇编。向R2R3和R6R7中输入多组不同的数据,运行

程序,观察R4R5R6R7中的内容,分析运行结果是否正确。

2、求符号函数??

???<=>=)0()0()0(1-01X X X Y ,设:X →30H ,Y →31H 输入设计好的程序检查无误后,汇编。向30H 中输入多个不同的数据,运行程序,观

察31H 中的内容,分析运行结果是否正确。

3、将ASCII 码转换十六进制数

设ASCII码放在累加器A中,结果放回到A中,如果A中的内容不是十六进制的数的ASCII码,用户标志位F0置1。输入设计好的程序检查无误后,汇编。向A中输入多个不同的数据,运行程序,观察A中的内容,分析运行结果是否正确。

四、实验程序及分析结果

1、双字节乘法运算程序

程序如下:

ORG 0000H

LJMP MAIN

MAIN: MOV A, R3 ;先计算R7乘R3

MOV B, R7

MUL AB ;A中为积的低八位

MOV R1,A ;将低八位存入R1中

MOV R5,B ;将高八位存入R5中

MOV A, R2 ;计算R7乘R2

MOV B, R7

MUL AB

ADD A, R5 ;R5加至A

MOV R5, A ;将结果存入R5

MOV R4, B ;将高位结果存入R4

MOV A, R1

MOV R7, A ;将低八位存入R7中

JNC NEXT1 ;C为零则跳转

MOV A, R4 ;如果C为1则将R4加一

CLR C

ADD A, #01

MOV R4, A

NEXT1: MOV A, R3

MOV B, R6

MUL AB

ADD A, R5

MOV R5, A

MOV R1,B

MOV A, R4

JNC NEXT2

CLR C

ADD A, #1

NEXT2: ADD A, R1

MOV R4, A

MOV A, R2

MOV B, R6

MUL AB

ADD A, R4

MOV R4, A

MOV A, B

JNC NEXT3

CLR C

ADD A, #1

NEXT3: MOV R1, A

MOV A,R5

MOV R6, A

MOV A, R4

MOV R5, A

MOV A, R1

MOV R4, A

HERE: SJMP HERE

END

总体思想为将该16位乘法拆分为四步8位乘法运算在进行带进位的相加程序中每段分别实现一个八位乘法,然后与上次运算结果相加。

实验结果

该程序正确正确的执行出了结果,输入数据后其输出数据均正确。

2、符号函数程序:

ORG 0000H

START: MOV A,30H

CJNE A,#00H,NZ

AJMP LL

NZ: JB ACC.7,MM

MOV A,#01H

AJMP LL

MM: MOV A,#81H

LL: MOV 31H,A

HERE: SJMP HERE

END

总体思想:将30H中的数与0比较,相等则31H输出为0;不相等判断最高位(符号位),符号位为0,说明是整数,输出为01H;符号位为1,说明为负数,输出为81H。

3、码转换程序

ORG 0000H

CLR C

CLR F0

SUBB A,#30H

JC NASC

CJNE A,#0AH,NE1

NOP

NE1: JC ASC

SUBB A,#07H

CJNE A,#0AH,NE2

NE2: JC NASC

CJNE A,#10H,NE3

NE3: JNC ASC

NASC: SETB F0

ASC: NOP

HERE: SJMP HERE

END

总体思想:16进制包括0~9,A~F,0~9的ASC值为30~39,A~F的ASC 值为65~70,依次按程序判断给出的数是否在这两个区间之内,满足条件则输出对应的16进制数,不满足条件则用户标志位F0置1.

实验三

一、实验目的

1 、了解汇编语言程序设计与调试的过程;

2 、掌握循环程序、查表程序和子程序的特点及设计。

二、实验内容

1 、循环程序的设计、输入、调试和运行;

2 、查表程序的设计、输入、调试和运行;

三、实验步骤

1 、排序程序:将N 个数从小到大排列起来。设R0的内容为数

据区的首地址,R7的内容为数据的字节数。

ORG 0000H

LJMP MAIN

MAIN:

SS:MOV A,R7

MOV R2,A

MOV 60H,R0

NN:DEC R2

MOV A,R2

MOV R3,A

MOV R0,60H

L1:MOV A,@R0

INC R0

CLR C

SUBB A,@R0

JC MM

MOV A,@R0

DEC R0

XCH A,@R0

INC R0

MOV @R0,A

SETB F0

MM:DJNZ R3,L1

MOV A,R2

CJNE R2,#01H,RR

SJMP JJ

RR:JB F0,NN

JJ:MOV R0,60H

HERE: SJMP HERE

END

该程序为经典的冒泡排序算法为效率非常高的算法,其大体

思想如下:

1.比较相邻两个数,如果后一个大于前一个,则将两个数交

换,否则不进行任何动作

2.继续比较下一个数

3.如果本趟比较没有进行交换,则排序完毕

2 、查表程序设计一程序,将16进制数转换为对应的ASCII 码。设

16进制数放在R6中,转换结果放在R7中。

ORG 0000H

LJMP MAIN

MAIN: MOV A,R6

ANL A,#0FH

MOV DPTR, #TAB

MOVC A,@A+DPTR

MOV R7, A

MOV R7, A

HERE: SJMP HERE

ORG 0030H

TAB :DB ‘012345678’

DB ‘9ABCDEF’

END

程序基本思想:将R6输入的数作为地址偏移量,进行查表寻址,采用DPTR指针寻址,基址为表格起始地址

四、实验结果

将数存入相应的内存单元,运行程序,排序结果正确

程序二中装换结果正确。

实验四单片机中断实验

一、实验目的

1 、了解单片机的中断过程。

2 、了解单片机中断的触发方式。

3 、了解单片机中断的程序设计。

4 、学习中断服务程序的调试方法。

二、实验内容

1 、单片机外部中断的低电平触发方式

如图 3.4.1,按住开关K,在INT0 端产生一个低电平信号,触发外部中断,将事先送入

寄存器R1中的值由LED 即发光二极管电路显示出来。

2 、单片机外部中断的下降沿触发方式

如图 3.4.1,按一下开关K,在INT0 端产生一个下降沿信号,触发

外部中断,将事先送

入寄存器R1中的值由LED 即发光二极管电路显示出来。

注意:开关Kx可用查询式键盘中的任意一键代替。

三、实验步骤

1 、外部中断的低电平触发方式

(i )按图4-3 给出的原理图连好电路,其中Kx 可为‘开关量输入如模块’中的任意一个开关,用双头线与INT0 引脚(位于单片机扩展资源区(D1区))连接。

参考程序如下:

ORG 0000H

AJMP MAIN

ORG 0003H

AJMP ITAP

ORG 0030H

MAIN:MOV TCON ,#00H

SETB EX0

SETB EA

HERE:AJMP HERE

ORG 0040H

ITAP :MOV A,R1

MOV P1, A

RETI

END

2 、外部中断的下降沿触发方式

参考程序如下:

ORG 0000H

AJMP MAIN

ORG 0003H

AJMP ITAP

ORG 0030H

MAIN: MOV TCON , #01H

MOV IE , #81H

MOV R1, #21H

HERE: AJMP HERE

ORG 0100H

ITAP : MOV A, P1

SWAP A

MOV P1, A

RETI

END

程序一设为低电平触发方式,只要外部存在低电平,则执行中断服务程序,程序二为下降沿触发模式。

四、实验结果

程序一在低电平持续期间,不停执行中断服务程序,程序二只在下降沿是执终端服务程序。

实验五单片机定时/计数器实验

一、实验目的

1 、了解单片机定时/ 计数器原理、工作方式选择;

2 、了解单片机定时与计数器的工作过程;

3 、了解单片机定时/ 计数器的程序设计方法。

二、实验内容

1 、用定时、计数器控制图4-4 中的发光二极管,使其亮两秒,灭两秒,周而复始,设计该

程序。

三、实验步骤

1 、设T0定时间隔为50ms(方式),当定时时间到后,将P1.7 的输

出加到T1端作计数脉冲,需要定时两次才构成一个完整的计数脉冲,因此T1需计数20 次,才能完成2 秒的定时,

2 、计算定时/ 计数器的初值T0为定时方式,

设其初值为4C00H

T1为计数方式初值为256-10=246=ECH

ORG 0000H

AJMP MAIN

ORG 000BH

AJMP T0_INT

ORG 0100H

MAIN: MOV TMOD, #61H

MOV TL1, #0ECH

MOV TH1, #0ECH

MOV TH0, #4CH

MOV TL0, #00H

MOV IE, #82H

SETB TR0

SETB TR1

LOOP1: JBC TF1, LOOP2

SJMP LOOP1

LOOP2: CPL P1.0

SJMP LOOP1

T0_INT: MOV TH0, #4CH

MOV TL0, #00H

CPL P1.7

RETI

END

每次经过50ms定时器一产生一个中断,将p1.7的电平翻转,产生100ms的脉冲,将其作为T1的计数输入端,则可产生一个周期两秒的脉冲

四、实验结果

P1.7的小灯按100ms的周期闪烁,P1.0的小灯按2s的周期闪烁。

相关主题
文本预览
相关文档 最新文档