加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

单片机汇编实验 0~99循环计数

(2010-05-25 10:42:26)
标签:

单片机

汇编

杂谈

实验六  串行口扩展实验

 

1.实验目的和要求

(1)掌握MCS-51单片机串行口方式0的工作原理。

(2)了解方式0的应用,即通过串行口扩展输出口,进行静态显示的方法。

(2) 掌握串行移位寄存器芯片74LS164的工作原理。

 

2.实验内容

编制程序使数码管循环依次显示00到99,每秒加1。

 

3.实验所用仪器

实验板一块、直流稳压电源、编程器一台、万用表一块

 

 

代码:

  ORG 0

MAIN:  MOV SCON,#00H    ;串行工作0,8位同步移位,波特率为晶振的12分之一

 

LLP :  MOV 31H,#0         ;用作累加器,0~100,

       MOV 32H,#0         ;存放BCD的低位

       MOV 33H,#0         ;存放BCD的高位

    

LP  MOV R0,#32H        ;R0指针指向32H,33H,即BCD的低位和高位

       MOV R1,#2          ;因为BCD有高位和低位2位,所以转换2次即可

    

       LCALL BIN2BCD      ;调用BCD转换子程序

 

       MOV DPTR,#TAB      ;TAB的基地址

DSPLY: MOV A,@R0          ;BCD位指针R0,把低位(先)和高位(后)给A

       MOVC A,@A+DPTR     ;把相应的数码管编码赋给A

 

       MOV SBUF,A         ;送给串口寄存器,即可串行发送给74LS164

 

BYWAIT:JNB TI,$           ;等待数据发送完毕

       CLR TI             ;软件清零TI

       INC R0             ;修正BCD位指针

       DJNZ R1,DSPLY

      

       LCALL DELAY        ;延时

       INC 31H            ;累加器加1(0~100)

       MOV A,31H

       CJNE A,#100,LP

       LJMP  MAIN         ;跳回主程序

      

DELAY: MOV R7,#5     ;1sec delay

DEL1:  MOV R6,#200 

DEL2:  MOV R5,#250 

       DJNZ R5,$   

       DJNZ R6,DEL2

       DJNZ R7,DEL1

       RET

     

      

BIN2BCD:MOV A,31H      ;把累加器中的数(0~100),赋给A

        MOV B,#10      ;

        DIV AB         ; 除以10

        MOV 33H,A      ; 高位放到33H

        MOV A,B        ;

        MOV 32H,A      ; 低位放到32H

        RET            ; 子程序返回

              

 

 

TAB  :DB 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h ;0~9数码管的编码表(共阳)

  

   END

 

http://s5/middle/6035432ct877d87704134&6900~99循环计数" TITLE="单片机汇编实验 0~99循环计数" />

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有