单片机实验——8155并行IO口扩展和动态扫描程序编制.docx

单片机实验——8155并行IO口扩展和动态扫描程序编制.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

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

实验目的

掌握8155并行I/O芯片扩展和使用方法

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

预习要点

(1)8155芯片基础知识

(2)51单片机的总线时序、地址译码的原理

数码管动态扫描显示方法

实验设备

计算机、单片机实验箱。

实验内容基本要求:

通过实验板的上的8155显示电路(在电路板上已经固定连接字形和字位控制线的8155部分),并通过跳线确定8155的地址,在八位数码管上显示30H到33H存储单元的内容。

扩展要求:

假定30H~33H的存储单元内容为高四位和低四位分存不同的BCD码,请依序将他们显示在LED上

实验2

ORG 0000H ;OGR为伪指令,不占用地址,只负责分配地址

SJMP MAIN

;********************************

;主程序

ORG 0030H

MAIN:MOVSP,#70H ;可以随意用的内部RAM为30H-7FH,习惯上设置栈指针为70HLCALLINIT ;调用初始化子程序

LOOP:LCALLDISPLAY ;循环调用显示子程序SJMPLOOP

;*********************************

;初始化子程序

INIT:

;设置显示缓存区 显示缓存区一般习惯上设为30H-37HMOV30H,#1

MOV31H,#2MOV32H,#3MOV33H,#4MOV34H,#5MOV35H,#6MOV36H,#7MOV37H,#8

;初始化8155

;8155地址:1、控制字**00H

PA为**01H

PB为**02H

PC为**03H

MOVDPTR,#0100H

;8155控制字地址

MOVA,#03H

;03H=00000011B

A口B口为输出

C口为输入

具体看第5章

MOVX@DPTR,A

RET

;**********************************

;显示子程序

DISPLAY:

MOVR0,#30H ;每次进显示子程序的时候先从显示缓存区的第一个开始

显示

MOVR3,#0FEH ;R3为字位,控制哪个数码管亮 【注意,每次只点

亮一个数码管】

LD0: ;控制字位

MOVDPTR,#0102H ;把字位端PB的地址送DPTR

MOVA,R3 ;把字位送AMOVX@DPTR,A ;把字位送PB口

;查表

MOVDPTR,#DTAB ;把字形表的首地址给DPTRMOVA,@R0 ;把要查的字送A

MOVCA,@A+DPTR ;查到字形并赋给A

;控制字形

MOVDPTR,#0101H ;把字形端PA的地址送DPTR

MOVX@DPTR,A ;把字形送到PA口

LCALLDELAY ;延时INCR0

MOVA,R3

JNBACC.7,LD1 ;判断最后一个管子是否亮了,亮了之后就退出显示程

RLA ;让下一个管子亮,左移字位

MOVR3,ALJMPLD0

LD1:RET

;*****************************************

;字形表

DTAB:

DB3FH,06H,5BH,4FH,66H ;0-F的字形DB6DH,7DH,07H,7FH,6FH

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

;*******************************************

;延时1ms的子程序

DELAY:

MOVR7,#02H ;具体延时时间T=250×2×2us=1000us=1ms (这个只是大概的,大概等于1ms而已)

DEL1:MOVR6,#250 ;这个地方很多人直接写#0FFH了,这样误差也不大DEL2:DJNZR6,DEL2 ;这条为双周期指令,所以上面250后面会乘以2

DJNZR7,DEL1RET

;********************************************

实验2扩展

ORG0000HSJMPMAIN

;**************************************

;主程序ORG0030H

MAIN:MOVSP,#70H

MOV30H,#11H ;要显示的内容,这个自己可以随便改,MOV31H,#22H ;只要能正确显示出来就可以了

MOV32H,#33HMOV33H,#44H

MOVDPTR,#0100H ;初始化8155 即控制字

MOVA,#03HMOVX@D

文档评论(0)

hao187 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档