技术热线: 4007-888-234

发布一个54的最简单例子

更新时间: 2019-03-26
阅读量:2268

;16c54学习程序,学习时候用16F54代替学习
;功能描述:点亮一个LED,
;
;
;======================硬件结构======================
;
;                          __________
;                    RA2--|1   U   18|--RA1
;                    RA3--|2       17|--RA0
;                     NC--|3 CHIP  16|--OSC1
;                   MCLR--|4 PIC   15|--OSC2
;                    GND--|5 16C54 14|--VDD
;                    RB0--|6       13|--RB7
;                    RB1--|7       12|--RB6                   
;                    RB2--|8       11|--RB5              
;                    RB3--|__________|--RB4             
;                        

 LIST P=16F54,R=DEC
     include "P16F5X.INC"
__CONFIG _WDT_ON & _CP_ON & _XT_OSC
;配置位选项:看门狗开(WDT_ON)加密位开(CP_ON)外部标准晶振(XT_OSC)

INDF  EQU 00H  ;间接寻址寄存器
RTCC EQU 01H  ;实时时钟/计数器
PC  EQU 02H  ;程序计数器
STATUS EQU 03H     ;状态寄存器
FSR  EQU 04H  ;寄存器选择寄存器
PORTA   EQU 05H  ;I/O寄存器
PORTB   EQU 06H  ;I/O寄存器

TEMP0 EQU 07H


ORG  00H
 GOTO RESET

;=====================================;
RESET:
    MOVLW  B'00000111';配置位预分频器
    OPTION
;OPTION;寄存器可用于:
;1:定义预分频器的预分频参数
;2:分配预分频器给RTCC用还或WDT.注意预分频器只能
;分配给RTCCWDT其中之一使用,不能同时分配.
;3:定义RTCC的信号源.
;4:定义RTCC的信号源的触发沿(上升沿触发或下降沿触发).
;OPTION寄存器各位的意义.
;RTS  RTE  PSA  PS2  PS1  PS0


 MOVLW  B'0000000';配置PORTA口方向寄存器,0为输出
    TRIS  PORTA
    MOVLW  B'0000000';配置PORTB口方向寄存器,1为输入
    TRIS  PORTB
 CLRF  PORTA ; 清零PA
    CLRF  PORTB ; 清零PB
;=============初始化清空所有RAM==========;


    MOVLW .7
 MOVWF FSR   ;将要清空的RAM的第一个地址送FSR指针
CLRF_RAM:
 CLRWDT
 CLRF INDF    ;清空指针指向的地址
 INCF FSR,F  ;指针加一
 MOVLW B'00011111' ;FSR3位不能用
 ANDWF FSR,W
 XORLW .31   ;比较是否清完所有RAM
 BTFSS STATUS,2
 GOTO CLRF_RAM
 GOTO M_LOOP ;
;=========================================;
M_LOOP:

CLRWDT   ;清看门狗
 BSF  PORTB,0 ;将PB,0口置高点亮LED灯
 GOTO M_LOOP
 END