⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spiled.asm

📁 1
💻 ASM
字号:
;*************************************************
;* spiled.asm                                   **
;*************************************************
;* 本程序为数码管显示处理模块程序                 
;* 占用I/O     RC3,RC4,RC5                     
;* 使用RAM     1个字节                          
;* 程序包括:                                
;*   - InitSPI  初始化SPI子程序          
;*   - LEDlight 送七段码显示子程序            
;* 入口参数   LED_DATA                        
;* 出口参数   无      
           
;*************************************************
#include p16F877.inc      ;定义所用单片机的头文件
;*************************************************
       ;数据区
;*************************************************
LED_DATA    EQU   0X21
Count       EQU   0X22
Count1	     EQU   0X23
Count2	     EQU   0X24
#define  SPITRIS TRISC	;
#define  SPISDI  PORTC,4	

  

       org  0x00
RESET  nop         
       goto  InitSPI

    org   0X10     ;读取键值判断测试程序入口
LEDTable         ;七段码调整 如果表出现PCL溢出,要调整表的位置 
   ADDWF PCL,F 
   DT 0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X77,0X7C,0X39,0X5E,0X79,0X71 
;*************************************************
;InitSPI--初始化SPI
;*************************************************
InitSPI
    MOVLW   0X32         ;开串行口,下降沿发送,时钟高电平为空闲状态
    MOVWF   SSPCON       ;SPI主控方式,时钟=OCS/64
    BSF     STATUS,RP0
    CLRF    SSPSTAT
    movlw   0X00         ;设置RB3,RB4,RB5为输出,硬件连接:
    MOVWF   SPITRIS      ;RC3- CLK-SRCLK;  RC4-SDI-RCLK;  RC5-SDO-SER
    BCF     STATUS,RP0
	movlw   0x30
    movwf   LED_DATA
    nop
    NOP
LEDlight
    MOVLW   HIGH LEDTable
    MOVWF   PCLATH
    MOVLW   0X0F
    ANDWF   LED_DATA,W
    CALL    LEDTable          ;七段码调整
    MOVWF   SSPBUF
    CLRF    PCLATH     
    btfss   PIR1,SSPIF        ;采用测试PIR1中的中断标志位
    GOTO    $-1               ;来判断是否发送完
    BCF     PIR1,SSPIF
    BCF     SPISDI           ;
    NOP
    BSF     SPISDI           ;
    call  LongDelay 
    incf  LED_DATA
    goto  LEDlight
;*****************************************************
LongDelay              ; call指令占用2个指令周期	
	clrf	Count      ; 清 Count占用1个指令周期
	clrf	Count1     ; 清 Count1占用1个指令周期
	movlw	0x03       ;占用1个指令周期
	movwf	Count2     ;占用1个指令周期
LDloop		
	decfsz	Count,f    ; 这两行指令将延时
	goto	LDloop     ; (256 * 3) -1 个指令周期
	decfsz	Count1,f
	goto	LDloop
	decfsz	Count2,f
	goto	LDloop
	return
	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -