北交单片机实验程序整理.docx

上传人:b****5 文档编号:6479645 上传时间:2023-01-06 格式:DOCX 页数:33 大小:124.78KB
下载 相关 举报
北交单片机实验程序整理.docx_第1页
第1页 / 共33页
北交单片机实验程序整理.docx_第2页
第2页 / 共33页
北交单片机实验程序整理.docx_第3页
第3页 / 共33页
北交单片机实验程序整理.docx_第4页
第4页 / 共33页
北交单片机实验程序整理.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

北交单片机实验程序整理.docx

《北交单片机实验程序整理.docx》由会员分享,可在线阅读,更多相关《北交单片机实验程序整理.docx(33页珍藏版)》请在冰豆网上搜索。

北交单片机实验程序整理.docx

北交单片机实验程序整理

实验二8155并行I/O口扩展和动态扫描程序编制

4.实验内容

基本要求:

通过实验板的上的8155(U16)显示电路(在电路板上已经固定连接字形和字位控制线的8155部分),并通过跳线确定8155的地址,在8个LED数码管上依次动态显示数字1~8。

扩展要求:

假定30H~33H的存储单元内容为4个字节16进制数,请依序将他们显示在8个LED数码管上

根据程序要求做如下程序流程图:

主程序流程图:

显示子程序流程框图:

基本要求编程如下:

ORG0000H

AJMPMAIN

ORG0050H

MAIN:

MOVSP,#60H;压栈

MOVDPTR,#4100H

MOVA,#0FH;方式控制字0FH送A

MOVX@DPTR,A;8155初始化

MOV70H,#01H

;设置显示缓冲区

MOV71H,#02H

MOV72H,#03H

MOV73H,#04H

MOV74H,#05H

MOV75H,#06H

MOV76H,#07H

MOV77H,#08H

LOOP:

ACALLDISPLAY;循环调用显示子程序

AJMPLOOP

DISPLAY:

MOVR0,#70H

;显示缓冲区首地址送R0

MOVR3,#0FEH

;字位控制初值送R3

LD0:

MOVDPTR,#4102H

MOVA,#0FFH

MOVX@DPTR,A;B口字位送高,关共阴显示

MOVA,@R0

MOVDPTR,#DISTAB

MOVCA,@A+DPTR;查表

MOVDPTR,#4101H

;PA口作字形

MOVX@DPTR,A

MOVDPTR,#4102H;PB口作字位

MOVA,R3

MOVX@DPTR,A

ACALLDELAY

;延时1ms

INCR0

;修正显示缓冲区指针

JNBACC.7,LD1

;若显示完一遍,则LD1

RLA

;字位码左移一位此处A中的值是R3

MOVR3,A

;送回R3

AJMPLD0

;显示下一个数码

LD1:

RET

;此处把每一个八位显示看成一次函数。

DISTAB:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;(共阴极字形表)

DELAY:

MOVR7,#02H;1ms延时

DELAY1:

MOVR6,#0FFH

DELAY2:

DJNZR6,DELAY2

DJNZR7,DELAY1

RET

END

实验中遇到的问题:

开始时没有预先在显示缓冲区中存入1~7,故实验显示的数据不是1、2、3、4、5、6、7、8,而是显示缓冲区中之前存在的无规则的一些数据,待向显示缓冲区重新赋值后,显示正常。

扩展要求编程如下:

ORG0000H

LJMPMAIN

ORG1000H

MAIN:

MOVSP,#50H

MOV30H,#0A1H

MOV31H,#0C2H

MOV32H,#0D3H

MOV33H,#0F4H

LCALLTRAN

MOVDPTR,#4100H

MOVA,#0FH

MOVX@DPTR,A

LOOP:

LCALLDISPLAY

SJMPLOOP

TRAN:

MOVR1,#30H;将30-31H里的十六进制数分成两位存在70-71H中

MOVR0,#70H

MOVR3,#04

LD2:

MOVA,@R1

ANLA,#0FH;取出低字节

MOV@R0,A

INCR0

MOVA,@R1

ANLA,#0F0H;取出高字节

SWAPA;高低字节交换,将十六进制数的两位分开存放

MOV@R0,A

INCR0

INCR1

DJNZR3,LD2

RET

DISPLAY:

MOVR1,#0FEH

;显示部分同基本要求

MOVR0,#70H

MOVA,R1

LD0:

MOVDPTR,#4102H

MOVX@DPTR,A

MOVA,@R0

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVDPTR,#4101H

MOVX@DPTR,A

LCALLDELAY

INCR0

MOVA,R1

JNBACC.7,LD1

RLA

MOVR1,A

SJMPLD0

LD1:

RET

TAB:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

DB77H,7CH,39H,5EH,79H,71H

DELAY:

MOVR7,#02H

DELAY1:

MOVR6,#0FFH

DELAY2:

DJNZR6,DELAY2

DJNZR7,DELAY2

RET

END实验三查询式键盘实验

1.实验目的

(1)掌握查询式按键检测方法

(2)掌握数码管动态扫描汇编语言的编制方法

2.预习要点

(1)按键检测的基本原理

(2)数码管动态扫描显示方法

3.实验设备

计算机、单片机实验箱。

4.实验内容

基本要求:

接实验二的实验内容,通过实验板的4个按键电路,将按键的检测线连接到CPU的p1.0~p1.3上。

当按下按键1到4时,在实验板显示电路(U16)分别对应显示1,2,3,4。

扩展要求:

30H~33H中放置字母A~D,字母在LED上循环显示,默认的循环周期为50ms,当按下按键1到4时,A~D循环间隔分别变为1至4秒,无按键按下时,恢复默认的时间间隔。

根据程序要求得到如下程序流程图:

基本要求编程如下:

ORG0000H

MAIN:

MOV70H,#0

MOV71H,#1

MOV72H,#2

MOV73H,#3

MOV74H,#4

MOVDPTR,#4100H

MOVA,#03H

MOVX@DPTR,A

READKEY:

MOVA,#0FFH

MOVP1,A

MOVA,P1

JNBACC.0,RP10

JNBACC.1,RP11

JNBACC.2,RP12

JNBACC.3,RP13

OFF:

MOVR0,#70H

MOVR3,#0FFH

SJMPLD0

RP10:

MOVR0,#70H

MOVR3,#0FEH

AJMPLD0

RP11:

MOVR0,#71H

MOVR3,#0FEH

AJMPLD0

RP12:

MOVR0,#72H

MOVR3,#0FEH

AJMPLD0

RP13:

MOVR0,#73H

MOVR3,#0FEH

AJMPLD0

LD0:

MOVA,R3

MOVDPTR,#4102H

MOVX@DPTR,A

MOVA,@R0

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVDPTR,#4101H

MOVX@DPTR,A

ACALLDELAY

AJMPMAIN

TAB:

DB06H,5BH,4FH,66H

DB6DH,7DH,07H,7FH

DELAY:

MOVR7,#02H

DELAY1:

MOVR6,#0FFH

DELAY2:

DJNZR6,DELAY2

DJNZR7,DELAY1

RET

SJMP$

END

扩展要求编程如下:

ORG0000H

LJMPMAIN

ORG1000H

MAIN:

MOVSP,#60H

MOV30H,#0AH

MOV31H,#0BH

MOV32H,#0CH

MOV33H,#0DH

MOVA,#0FH

MOVDPTR,#4100H

MOVX@DPTR,A

READKEY:

MOVA,#0FFH

MOVP1,A

MOVA,P1

JNBACC.0,RP10

JNBACC.1,RP11

JNBACC.2,RP12

JNBACC.3,RP13

OFF:

MOVR7,#50

AJMPDISPLAY

RP10:

MOVR7,#100

AJMPDISPLAY

RP11:

MOVR7,#200

AJMPDISPLAY

RP12:

MOVR7,#300

AJMPDISPLAY

RP13:

MOVR7,#400

AJMPDISPLAY

DISPLAY:

MOVR0,#30H

MOVR2,#0FEH

LD:

MOVA,@R0

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVDPTR,#4101H

MOVX@DPTR,A

MOVDPTR,#4102H

MOVA,R2

MOVX@DPTR,A

ACALLDELAY

INCR0

JNBACC.3,LD1

RLA

MOVR2,A

AJMPLD

LD1:

AJMPREADKEY

DELAY:

MOVR6,#500

DELAY1:

DJNZR6,DELAY1

DJNZR7,DELAY

RET

TAB:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

DB77H,7CH,39H,5EH,79H,71H

实验四利用中断控制LED灯

1.实验目的

(1)掌握单片机中断的基本原理。

(2)掌握单片机中断程序的编制方法。

2.预习要点

(1)单片机中断基本原理

(2)中断程序编制方法

3.实验设备

计算机、单片机实验箱、信号发生器。

4.实验内容

基本要求:

将信号发生器输出的脉冲信号连接到CPU的INT0上,将CPU的P1.0到P1.7和8个红色LED灯连接,脉冲信号为5V、100Hz,每输入一百个脉冲LED灯亮一次,并且LED灯顺序循环移位一次,形成跑马灯。

扩展要求:

在LED数码管上与跑马灯同步显示1~8,顺序为P1.0对应的灯亮时对应显示数字1,依次类推。

根据程序要求得到如下程序流程图:

主程序流程图

中断子程序流程图

基本要求编程如下:

ORG0000H

AJMPMAIN

ORG0003H

AJMPEXINT0

MAIN:

MOVSP,#70H

SETBIT0

;设定为负边沿触发

SETBEX0;

开INT0中断

SETBEA

;开总中断

MOVR3,#00H

MOVP1,#01H

HERE:

SJMPHERE

EXINT0:

INCR3

CJNER3,#64H,NEXT

;计数值不到100,则返回

MOVR3,#00H

MOVA,P1

;计数值到100则对P1口的内容进行移位

RLA

MOVP1,A

NEXT:

RETI

扩展实验程序:

ORG0000H

AJMPMAIN

ORG0003H

AJMPEXINT0

ORG0060H

MAIN:

MOVSP,#60H

SETBIT0

SETBEX0

SETBEA

MOV30H,#0

MOV31H,#1

MOV32H,#3

MOV33H,#2

MOV34H,#5

MOV35H,#6

MOV36H,#7

MOV37H,#8

;缓存器中送入1--8

MOVR3,#00H

;用于计脉冲

MOVP1,#00H

;关LED显示

MOVR4,#01H

;控制跑马灯

MOVR0,#30H

MOVR5,#0FEH

MOVR2,#8

MOVDPTR,#4100H

MOVA,#03H

MOVX@DPTR,A

;方式控制字送8155命令口

SJMP$

EXINT0:

INCR3

CJNER3,#64H,NEXT

;计算脉冲达到100

MOVR3,#00H

;清零,重新计数

MOVA,R4

MOVP1,A

;跑马灯显示

RLA

MOVR4,A

DISPLAY1:

MOVR0,#30H

MOVR5,#0FEH

MOVA,@R0

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVDPTR,#4101H

MOVX@DPTR,A

MOVDPTR,#4102H

MOVA,R5

MOVX@DPTR,A

ACALLDELAY;

INCR0

DJNZR2,NEXT

MOVR2,#8

MOVR0,#30H

NEXT:

RETI

TAB:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

DELAY:

MOVR7,#05H

DELAY1:

MOVR6,#0FFH

DELAY2:

DJNZR6,DELAY2

DJNZR7,DELAY1

RET

END

实验五单相方波波形发生器

1.实验目的

(1)掌握单片机定时器基本原理和使用方法。

(2)掌握单片机中断程序的编制方法。

2.预习要点

(1)单片机定时器基本原理

(2)中断程序编制方法

3.实验设备

计算机、单片机实验箱,示波器。

4.实验内容

基本要求:

(1)利用定时器在p1.1输出方波,方波的周期为50ms,占空比为50%。

(2)改上例中方波的占空比为25%。

扩展要求:

利用LED数码管做一个包含时、分、秒的计时器

基本要求编程如下:

占空比为50%的方波(晶振为12M):

ORG0000H

AJMPMAIN

ORG000BH

AJMPBRT0

MAIN:

MOVSP,#60H

MOVTMOD,#01H

MOVTH0,#9EH

MOVTL0,#58H

MOVIE,#82H

SETBTR0

HERE:

SJMPHERE

BRT0:

CPLP1.1

MOVTH0,#9EH

MOVTL0,#58H

RETI

END

占空比为25%的方波(晶振为12M):

ORG0000H

AJMPMAIN

ORG000BH

AJMPBRT0

MAIN:

MOVSP,#60H

SETBP1.1

MOVTMOD,#01H

MOVTH0,,#0CFH

MOVTL0,#2CH

MOVIE,#82H

SETBTR0

HERE:

SJMPHERE

BRT0:

CPLP1.1

JNBP1.1,D3

MOVTH0,#0CFH

MOVTL0,#2CH

RETI

D3:

MOVTH0,#6DH

MOVTL0,#84H

RETI

END

扩展实验程序:

ORG0000H

AJMPMAIN

ORG000BH

AJMPBRT0

ORG0060H

MAIN:

MOVSP,#60H

MOVTMOD,#01H

MOVTH0,#3CH

MOVTL0,#0B0H

MOVIE,#82H

SETBTR0

MOVR5,#20

MOVR6,#60

MOVR7,#60

MOV40H,#00H;秒

MOV41H,#00H;分

MOV42H,#00H;时

MOV30H,#00H

MOV31H,#00H

MOV32H,#00H

MOV33H,#00H

MOV34H,#00H

MOV35H,#00H

HERE:

LCALLLD0

SJMPHERE

BRT0:

MOVTH0,#3CH

MOVTL0,#0B0H

DJNZR5,NEXT

MOVA,40H

ADDA,#01H

MOV40H,A

MOVB,#10

DIVAB

ACALLLD1

MOV31H,A

MOV30H,B

MOVR5,#20

DJNZR6,NEXT

MOV40H,#00H

MOVA,41H

ADDA,#01H

MOV41H,A

MOVB,#10

DIVAB

ACALLLD1

MOV33H,A

MOV32H,B

MOVR6,#60

DJNZR7,NEXT

MOV41H,#00H

MOVA,42H

ADDA,#01H

MOV42H,A

ACALLLD2

MOVB,#10

DIVAB

MOV35H,A

MOV34H,B

MOVR7,#60

NEXT:

RETI

LD1:

CJNEA,#06H,LOOP

MOVA,#00H

SJMPLOOP

LD2:

CJNEA,#0CH,LOOP

MOVA,#00H

MOV42H,#00H

LOOP:

RET

LD0:

MOVR0,#30H

MOVR2,#6

MOVR3,#7FH

DISPLAY:

MOVDPTR,#4100H

MOVA,#03H

MOVX@DPTR,A

MOVDPTR,#TAB

MOVA,@R0

MOVCA,@A+DPTR

MOVDPTR,#4101H

MOVX@DPTR,A

MOVDPTR,#4102H

MOVA,R3

MOVX@DPTR,A

ACALLDELAY

RRA

MOVR3,A

INCR0

DJNZR2,DISPLAY

RET

TAB:

DB3FH,06H,5BH,4FH,66H

DB6DH,7DH,07H,7FH,6FH

DB77H,7CH,39H,5EH,79H

DB71H

DELAY:

MOV57H,#250

DELAY1:

DJNZ57H,DELAY1

RET

END

实验六利用A/D完成电压测量及显示

1.实验目的

(1)掌握A/D转换器的基本原理和使用方法。

(2)掌握二进制数和BCD码之间的数值转换方法。

2.预习要点

(1)A/D转换器的基本原理和使用方法

(2)二进制数和BCD码之间的数值转换方法

3.实验设备

计算机、单片机实验箱,万用表。

4.实验内容

基本要求:

利用ACH1电位器,在0~5V范围调节A/D转换器0809的输入端ADIN0的电压,在显示电路上(U16)显示00~50数值。

扩展要求:

相同输入条件下,在显示电路上显示-25~+24的数值。

根据题目得如下结构框图:

主程序流程图

A/D转换子程序流程图

基本要求编程如下:

ORG0000H

LJMPMAIN

ORG0100H

MAIN:

ACALLREADAD

ACALLDISPLY

SJMPMAIN

READAD:

MOVA,#00H

MOVDPTR,#8000H;IN0,

MOVX@DPTR,A

;启动A/D转换

MOVR7,#80H

;等待A/D转换完成

AD0809:

DJNZR7,AD0809

MOVXA,@DPTR

MOVB,#50

MULAB

MOV40H,B

;将0~255范围内的数据转换成00~50范围内的数据

MOVA,40H

MOVB,#10

DIVAB

MOV50H,A

MOV51H,B

RET

DISPLY:

MOVA,#03H

MOVDPTR,#4100H

MOVX@DPTR,A

MOVR0,#51H

MOVR6,#0FEH

LD0:

MOVA,R6

MOVDPTR,#4102H

MOVX@DPTR,A

MOVDPTR,#4101H

MOVA,@R0

MOVDPTR,#TAB

MOVCA,@A+DPTR

ACALLDELAY12MS

DECR0

MOVA,R6

JNBACC.1,LD01

RLA

MOVR6,A

AJMPLD0

LD01:

RET

TAB:

DB:

3FH,06H,5BH,4FH,66H,

6DH,7DH,07H,7FH,6FH

DELAY12MS:

MOVR4,#02H

DL2:

MOVR5,#0FBH

DL1:

DJNZR5,DL1

DJNZR4,DL2

RET

END

扩展实验编程如下:

ORG0000H

AJMPMAIN

ORG0030H

MAIN:

MOVSP,#60H

MOVDPTR,#4100H

MOVA,#0FH

MOVX@DPTR,A

MOVDPTR,#8000H

MOVA,#00H

MOVX@DPTR,A

ACALLDELAY

ACALLDELAY

ACALLGETV

ACALLDISPLAY

;调用显示程序

LJMPMAIN

;循环主程序

GETV:

MOVDPTR,#8000H

MOVXA,@DPTR

MOVB,#50

MULAB

;A*50/255,A先乘以50。

高8位放在B,低8位放在A

MOVA,B

;取出高8位,相当于除以了256,右移8位

CLRC

SUBBA,#25;减25

JBACC.7,FUSHU

;最高位不等于0跳转

MOV50H,#10H

SJMPNEXT

FUSHU:

MOV50H,#14H

CPLA

;有符号数取其正值

NEXT:

MOVB,#10

;分两位数显示

DIVAB

MOV51H,A

MOV52H,B

RET

DISPLAY:

MOVDPTR,#4102H

MOVA,#0FFH

MOVX@DPTR,A

实验七利用DAC0832完成波形发生器

4.实验内容

基本要求:

利用实验板上的0832D/A芯片,将示波器连接到滤波电路后,通过程序产生周期为20ms的三角波。

扩展要求:

利用实验板上的0832D/A芯片和电位器,将示波器连接到滤波电路后,通过程序产生周期或幅度可调的锯齿波。

根据题目要求构造如下程序流程图:

 

基本要求编程如下:

ORG0000H

AJMPMAIN

ORG0050H

MAIN:

MOVSP,#60H

CLRA

MOVDPTR,#4000H

DOWN:

MOVX@DPTR,A

ACALLDELAY

INCA

JNZDOWN

MOVA,#0FEH

UP:

MOVX@DPTR,A

ACALLDELAY

DECA

JNZUP

SJMPDOWN

DELA

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1