网站导航免费论文 原创论文 论文搜索 作业答案 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 设计资源 > 单片机 > 正文
实战六《ST套件的静态数码管显示实验》
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: Admin 发布时间: 10/06/19
;ST套件数码管静态显示试验(学习查表程序)
;本实验的目的是让大家熟悉数码管,学习怎样应用查表程序,本程序的功能是要用PIC来实现一位
;数码管显示,程序复位后先由第一个数码管从0循环显示到9,再由第二个数码管从0显示到9,然后再
;由第一个数码管显示返复循环。程序中用一个计数器由0计数到9,同时将其在LED上显示出来。该例给出
;计数值与显示码的转换方法。
 ;烧写时应注意:配置位已经在程序中写明,加载HEX文件时会自动加载,烧写时不用再手动设置配置位。
;实验时请注意套件跳线选择;
;****************************************************************
  LIST P=16F84A,R=DEC    ;定义器件为16F84,默认数制为十进制
;-----------------------------------------------
  __CONFIG B'11111111110001';_CP_OFF&_WDT_OFF&_PWRITE_ON&_XT_OSC 
                                              ;没有代码保护
                                              ;看门狗关闭
                                              ;上电廷时器开启
                                              ;振荡器模式为XT
;---------------------
PC     EQU 02H            ;变量单元定义
STATUS EQU 03H
PORTA EQU 05H
PORTB EQU 06H

TRISA EQU 5H
TRISB EQU 6H
;-----------------------STATUS
RP0    EQU 5
;-----------------------
COUNTER EQU 10H
COUNT0  EQU 11H
COUNT1  EQU 12H
COUNT2  EQU 13H
TABADD  EQU 14H
;--------------------
     ORG 0000H
MAIN
     CLRF PORTA
     CLRF PORTB          ;初始IO口
     
     BSF STATUS,RP0      ;设置数据寄存器体1
     MOVLW 00000000B     ;设置RB、RA口全部为输出
     MOVWF TRISA 
     MOVWF TRISB  
     BCF STATUS,RP0      ;恢复数据寄存器体0
;----------------------
LOOPA
     MOVLW 0FFH          ;让数码所有划先熄灭
     MOVWF PORTB
     BSF PORTA,2
     BCF PORTA,1          ;让第一位数码管显示
LOOP1
     MOVLW TABLE          ;将转换表的首地址存入TABADD
     MOVWF TABADD
     CLRF COUNTER         ;计数器清0
     CLRW
LOOP2
     ADDWF TABADD,W        ;计数值(W)与转换表的起始地址相加
     CALL CONVERT          ;存入W后调用转换表子程序
     MOVWF PORTB           ;取出的七段显示码送RB口显示
     CALL DELAY
     INCF COUNTER,1        ;计数器加1递增(依次显示0,1,2,…9,。)
     MOVLW 11
     XORWF COUNTER,0       ;第一位显示完后转第二位显示
     BZ LOOPB
     MOVFW COUNTER
     GOTO LOOP2
;-------------------------
LOOPB
     MOVLW 0FFH            ;让数码所有划先熄灭
     MOVWF PORTB
     BSF PORTA,1
     BCF PORTA,2            ;让第二位数码管显示
LOOP3
     MOVLW TABLE
     MOVWF TABADD
     CLRF COUNTER
     CLRW
LOOP4
     ADDWF TABADD,W
     CALL CONVERT
     MOVWF PORTB
     CALL DELAY
     INCF COUNTER,1
     MOVLW 11
     XORWF COUNTER,0
     BZ LOOPA                  ;第二位显示完后转第一位循环显示
     MOVFW COUNTER
     GOTO LOOP4
;---------------------------------
DELAY	                                ;设置延时常数
       MOVLW    	3              	
       MOVWF    	COUNT0
L1	  		
       MOVLW    	255
       MOVWF    	COUNT1
L2	  	
       MOVLW    	255
       MOVWF    	COUNT2
L3	  		
       DECFSZ   	COUNT2,1         ;递减循环 
       GOTO	   	L3
       DECFSZ   	COUNT1,1
       GOTO	   	L2
       DECFSZ   	COUNT0,1
       GOTO	   	L1
       RETLW    	0
;-------------------- ----------------------------------
CONVERT   
            MOVWF    	PC                      ;将W寄存器内的7段显示码地址放入PC   	 
TABLE                                           ;PC执行新地址指令, 跳到相对的地址执行 
                                                ;RETLW指令,将七段显示码存入W后返回         	
	   RETLW    	081H 	   		;0 
	  RETLW    	0E7H 	   		;1                                
	  RETLW    	092H 	   		;2
	  RETLW    	0A2H 	   		;3
	  RETLW    	0E4H 	   		;4
	  RETLW    	0A8H 	   		;5
	  RETLW    	088H 	   		;6
	  RETLW    	0E3H 		   	;7
	  RETLW    	080H 	   		;8
	  RETLW    	0A0H 	   		;9
          RETLW       07FH                      ;.
;----- -----------------------------------------------
     END

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 电话:013574892963 QQ:3710167 邮箱:Educs@163.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 Www.myeducs.Cn All Rights Reserved
湘ICP备09003080号