哈理工单片机实验讲义

更新时间:2024-06-19 09:15:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单片机原理

(第 2分册)

哈尔滨理工大学

2003年7月1日

- 1 -

目录

计算机控制实验室

………………………(1)

数据排序与多字节十进制加法实验 ……………(3) 定时器 /计数器实验 ……………………(7) 外部中断实验 ……………….………(10) 8255扩展并行口实验 ……………….….(13) 串行口通讯实验 …………….……….…(15) A/D、D/A转换实验 ………….……….…(21)

单片机原理

- 2 -

撰写人姓名:____________ 撰写时间:_________________ 审查人姓名:_________________

实验全过程记录

实验 名称 时间 数据排序与多字节十进制加法实验 学号 学号 地点 姓名 同实验者 1:数据排序 一 实验目的:

班 组 班 组 1.了解数据排序的简单算法。 2.了解数列的有序和无序概念

二 实验内容:

Size equ 5 Array equ 50h Change equ 0

mov 50h,#02h mov 51h,#01h mov 52h,#03h mov 53h,#05h mov 54h,#04h Sort:

mov r0, #Array mov r7, #Size-1 clr Change Goon:

mov a, @r0 mov r2, a

inc r0

- 3 -

mov B, @r0 cjne a, B, NotEqual sjmp Next NotEqual:

jc Next

setb Change xch a, @r0 dec r0 xch a, @r0 inc r0 Next:

djnz r7, Goon

;jb Change, Sort ljmp $ end

三 实验用设备仪器及材料: 计算机 伟福实验箱 万用表

四 实验原理图:

- 4 -

设置数据区地址 设置数据区长度 清除交换标志 当前地址取数A 地址加1 当前地址取数B 是 A<=B? 否 设置交换标志 否 数据比较完 是 否 全部有序? 是 交换A,B数位置

五 实验方法及步骤:

有序的数列更有利于查找。本程序用的是“冒泡排序”法,算法是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在 数列的最后面。再进行下一轮比较,找出第二大数据,直到全部数据有序。

结束 - 5 -

六 实验结果分析:

2:多字节十进制加法: 一:实验目的:

了解加法程序的基本设计方法

二:实验内容:

加数的首地址由r0指出,被加数和结果的存贮单元首地址由r1指出,字节由r2指出。 Org 0000h

Reset: ajmp main Org 0100h

Mov sp,#60h Mov r0,#31h Mov @r0,#22h Dec r0

Mov @r0,#33h

Mov r1,#21h

Mov @r1,#44h Dec r1

Mov @r1,#55h Mov r2,#02h Acall dacn Here: ajmp here Dacn: clrc

Dal : Mov a,@r0 Addc a,@r1 Da a Mov r1,a Inc r0

Inc r1

Djnz r2,dal Clr a

Mov acc.0,c ret

三:实验用设备仪器及材料:

- 6 -

计算机 伟福实验箱 万用表 四 实验原理图:

存放被加数 存放加数 低位与低位,高位与高位分别相加 在存储单元中观察结果

五 实验方法及步骤:

1:接通伟福仿真器,打开wave 图标

2:打开数据存储器窗口,打开程序存储器窗口急特殊功能寄存器窗口。 3:调试程序。观察各存储器的变化。 六 实验结果分析:

成绩评定: _____________________ 指导教师:_________________________

年 月 日 撰写人姓名:____________ 撰写时间:_________________ 审查人姓名:_________________

实验全过程记录

实验 名称 姓名 同实验者 时间 地点 班 组 班 组 定时器 /计数器实验 学号 学号 - 7 -

一 实验目的:

学习8031内部定时/计数器使用方法。 进一步掌握中断处理程序的编程方法。

二 实验内容: 计数器:

mov TMOD, #00000101b mov TH0, #0 mov TL0, #0

setb TR0

Loop:

mov P1, TL0 ljmp Loop

end 定时器:

Tick equ 10000

T100us equ 256-50 C100us equ 30h LEDBuf equ 0 LED0 equ P1.0 LED1 equ p1.1

ljmp Start

org 000bh T0Int:

push PSW

mov a, C100us+1 jnz Goon dec C100us Goon:

dec C100us+1

mov a, C100us

- 8 -

orl a, C100us+1 jnz Exit

mov C100us, #high(Tick) mov C100us+1, #low(Tick) cpl LEDBuf Exit:

pop PSW reti

Start:

mov TMOD, #02h mov TH0, #t100us mov TL0, #t100us

mov IE, #10000010b setb TR0

clr LEDBuf clr LED0 clr LED1

mov C100us, #high(Tick) mov C100us+1, #low(Tick)

Loop:

mov c, LEDBuf mov LED0, c cpl c

mov LED1, c cpl c ljmp Loop

end

三 实验用设备仪器及材料: 计算机 伟福实验箱

- 9 -

四 实验原理图:

五 实验方法及步骤:

本实验中内部计数器起计数器的作用。外部事件计数脉冲由P3.4引入定时器T0。单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变。这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。同时这就决定了输入波形的频率不能超过机器周期频率。

六 实验结果分析:

成绩评定: _____________________ 指导教师:_________________________

年 月 日

撰写人姓名:____________ 撰写时间:_________________ 审查人姓名:_________________

实验全过程记录

实验 名称 姓名 同实验者 时间 地点 班 组 班 组 外部中断设计性实验 学号 学号 - 10 -

一 实验目的:

1、自己编程设计一个外部中断处理程序。 2、学习中断处理程序的编程方法。

二 实验内容:(样例)

LED equ P1.0

LEDBuf equ 0

ljmp Start

org 3 Interrupt0:

push PSW cpl LEDBuf mov c, LEDBuf mov LED, c

pop PSW reti

Start:

clr LEDBuf clr LED

mov TCON, #01h mov IE, #81h

ljmp $

end

三 实验用设备仪器及材料: 计算机 伟福实验箱 四 实验原理图:

单次脉冲

- 11 -

实验框图

开始 中断入口 设置初始状态 保护现场 设置中断控制 寄存器 状态位取反 中断允许 状态位输出 等待中断 恢复现场 中断返回 主程序框图 INTO中断子程序框图 五 实验方法及步骤:

本实验中使用了INTO中断,一般中断程序进入时应保护PSW,ACC以及中断程序使用但非其专用的寄存器。本例的INTO程序保护了PSW,ACC等三个寄存器并且在退出前恢复了这三个寄存器。另外中断程序中涉及到关键数据的设置时应关中断,即设置时不允许重入。INTO端接单次脉冲发生器。P1.0接LED灯,以查看信号反转. 六 实验结果分析:

成绩评定: _____________________ 指导教师:_________________________

年 月 日

- 12 -

撰写人姓名:____________ 撰写时间:_________________ 审查人姓名:_________________

实验全过程记录

实验 名称 姓名 同实验者 时间 地点 班 组 班 组 8255输入、输出实验 学号 学号 一、实验目的

- 13 -

利用8255可编程并行口芯片,实现输入/输出实验,实验中用8255PA口作输出,PB口作输入。

1、了解8255芯片结构及编程方法。 2、了解8255输入/输出实验方法。

二、实验内容

mode equ 082h PortA equ 8000h PortB equ 8001h PortC equ 8002h CAddr equ 8003h

org 0h

mov a, #mode

mov dptr, #CAddr

movx @dptr,a

;实验1:PortA输出

mov a,#80H

mov dptr,#PortA mov b,#8H

OutA: movx @dptr,a rr a mov r5,#1

call delay djnz b, OutA

;实验2: PortB 输入 PortA 输出

mov dptr,#PortB movx a,@dptr mov dptr,#PortA movx @dptr,a

mov r5,#2 call delay

ljmp 0

delay:

mov r7,#0

- 14 -

ddd: djnz r7,ddd djnz r6,ddd djnz r5,ddd ret

end

三、 实验用设备仪器及材料:

计算机 伟福实验箱 万用表

四、实验电路及连线

8255的CS/接地址译码/CS0,则命令字地址为8003H,PA口地址为8000H,PB口地址为8001H,PC口地址为8002H。PA0-PA7(PA口)接LED0-LED7(LED)PB0-PB7(PB口)接K0-K7(开关量) 再接上数据线和读/写信号,地址线只接A0,A1即可,还要接上RESET信号,以便8255A可靠复位。

五 实验方法及步骤: 六 实验结果分析:

成绩评定: _____________________ 指导教师:_________________________

年 月 日

- 15 -

撰写人姓名:____________ 撰写时间:_________________ 审查人姓名:_________________

实验全过程记录

实验 名称 姓名 同实验者 一 实验目的:

- 16 -

时间 地点 班 组 班 组 单片机串行口通讯实验 学号 学号 1 掌握单片机串行口工作方式的程序设计,及简易三线式通讯的方法。 2、了解实现串行通讯的硬环境、数据格式的协议、数据交换的协议。 3、学习串口通讯的中断方式的程序编写方法。 二 实验内容: 发送程序: ;cbq2...03,5,31 org 0000h ljmp start org 0100h start: NOP nop nop nop nop nop mov sp,#60h mov ie,#00h clr psw.4 clr psw.3 ppp: mov a,#0ffh; mov p1,a LCALL YSCX lcall yscx LCALL YSCX mov a,#00h mov p1,a lcall yscx lcall yscx LCALL fSCX;调发送子程序FCXTO: ljmp ppp;

yscx: push psw mov r7,#06fh yscx1: mov r6,#0ffh

- 17 -

yscx2: nop djnz r6,yscx2 djnz r7,yscx1 pop psw ret

JSCX: MOV TMOD,#20H;接收 MOV TH1,#0FDH MOV TL1,#0FDH SETB TR1 CLR ES MOV SCON,#50H MOV PCON,#00H

SMM: JBC RI,SMM1 SJMP SMM

SMM1: MOV A,SBUF MOV p1,a;@R0,A RET

FSCX: MOV TMOD,#20H;发送 MOV TH1,#0FDH MOV TL1,#0FDH SETB TR1 CLR ES MOV SCON,#50H MOV PCON,#80H

FM0: mov a,#0fh;MOVX A,@DPTR MOV SBUF,A FM1: JBC TI,FM2 AJMP FM1 FM2: mov p1,a; RET end

接受程序: ;cbq2...03,5,31 org 0000h

- 18 -

ljmp start org 0100h start: NOP nop nop nop nop nop mov sp,#60h mov ie,#00h clr psw.4 clr psw.3 ppp: mov a,#0ffh; mov p1,a LCALL YSCX lcall yscx LCALL YSCX mov a,#00h mov p1,a lcall yscx lcall yscx LCALL JSCX ;调接收子程序FCXTO: ljmp ppp;

yscx: push psw mov r7,#06fh yscx1: mov r6,#0ffh yscx2: nop djnz r6,yscx2 djnz r7,yscx1 pop psw ret

JSCX: MOV TMOD,#20H;接收 MOV TH1,#0FDH MOV TL1,#0FDH SETB TR1

- 19 -

CLR ES MOV SCON,#50H MOV PCON,#00H

SMM: JBC RI,SMM1 SJMP SMM

SMM1: MOV A,SBUF MOV p1,a;@R0,A RET

FSCX: MOV TMOD,#20H;发送 MOV TH1,#0FDH MOV TL1,#0FDH SETB TR1 CLR ES MOV SCON,#50H MOV PCON,#80H

FM0: mov a,#0fh;MOVX A,@DPTR MOV SBUF,A FM1: JBC TI,FM2 AJMP FM1 FM2: mov p1,a; RET ;include\end

三 实验用设备仪器及材料: 计算机 伟福实验箱 四 实验原理图:

- 20 -

五 实验方法及步骤:

1:通讯双方的RXD、TXD信号本应经过电平转换后再行交叉连接,本实验中为减少连线可将电平转换电路略去,而将双方的RXD、TXD直接交叉连接。也可以将本机的TXD接到RXD上 2:按下的键,就会在本机LED上显示出来。

六 实验结果分析:

成绩评定: _____________________ 指导教师:_________________________

年 月 日

撰写人姓名:____________ 撰写时间:_________________ 审查人姓名:_________________

实验全过程记录

实验 名称 姓名 同实验者 时间 地点 班 组 班 组 A/D转换、D/A转换实验 学号 学号 1:A/D转换 一 实验目的:

1、 掌握A/D转换与单片机的接口方法。 2、 了解A/D芯片ADC0809转换性能及编程。

- 21 -

3、 通过实验了解单片机如何进行数据采集。

二 实验内容:

CS0809 equ 08000h

mov dptr, #CS0809 mov a, #0

movx @dptr, a

mov a, #40h

djnz ACC, $

movx a, @dptr ljmp $ end

三 实验用设备仪器及材料: 计算机 伟福实验箱

四 实验原理图:

五 实验方法及步骤:

本程序是用延时查询方式读入A/D转换结果,也可以用中断方式读入结果,在中断方式下,A/D转换结束后会自动产生EOC信号,将其与8031的INT0相接,可以试试编程用中断方式读回A/D结果.

六 实验结果分析:

2:D/A转换 一 实验目的:

1 了解D/A转换的基本原理。

- 22 -

2、了解D/A转换芯片0832的性能及编程方法。 3、了解单片机系统中扩展D/A转换的基本方法。

二 实验内容: 锯齿波:

CS0832 equ 08000h

mov dptr, #CS0832 mov a, #0

loop1: movx @dptr, a inc a

cjne a,#0h,loop1 ljmp 0000h end

三角波:

CS0832 equ 08000h

mov dptr, #CS0832 mov a, #0

loop1: movx @dptr, a inc a

cjne a,#0ffh,loop1 loop2: dec a movx @dptr,a cjne a,#0h,loop2

ljmp 0000h end

方波:

CS0832 equ 08000h

mov dptr, #CS0832 mov r2, #0ffh loop1:

mov a,#0h movx @dptr, a djnz r2,loop1

- 23 -

mov r3,#0ffh loop2:

mov a,#0ffh movx @dptr,a djnz r3,loop2

ljmp 0000h end

三 实验用设备仪器及材料: 计算机,伟福实验箱,示波器

四 实验原理图:

五 实验方法及步骤:

用示波器探头接触Ua或Ub,观察显示波形。

1、D/A转换是把数字量转换成模拟量的变换,实验台上D/A电路输出的是模拟电压信号。要实现实验要求,比较简单的方法是产生三个波形的表格,然后通过查表来实现波形显示。

2、产生锯齿波和三角波的表格只需由数字量的增减来控制,同时要注意三角波要分段来产生。

六 实验结果分析:

- 24 -

成绩评定: _____________________ 指导教师:_________________________

- 25 -

年 月

本文来源:https://www.bwwdw.com/article/g2e3.html

Top