📄 init.asm.bak
字号:
;/**************************************************************************
;* *
;* Copyright (c) 2006 by JINRUN Technology Co., Ltd. *
;* Title : FPPA TM demo board---PIC PARTY
;* Content: AD,LCM Drive,Key input,LED flash,etc.,
;* MCU : PIC16F877A(PIC),PDK80C08(PDK)[FPPA TM]
;* LCD : RT1602C
;* OSC : 8MHz(ext. HT)
;* WDT : OFF
;* Author : Raker.Yang *
;* FPPA TM 简介:FPPA TM是世界首创的多核心单晶片,所有RAM和ROM却能够共享
;* 目前支持8个核心(8路独立PC,STACK,ACC等)
;* 既然有了独立多核心,跑多任务程序也就更简单了。
;* 更重要的是,它可以非常方便的扩展MCU外围,如,PWM,IIC,UART等。
;* 如果你对FPPA TM技术感兴趣,欢迎访问笔者博客 http://gongkong.gkbk.com
;* 或加入作者QQ:595142970, QQ群25644462
;* 同时欢迎各路商家前来进行方案合作!
;*
;* 声明:本资料仅供个人学习PIC或FPPA TM软件设计参考,任何人都可以转载此资料。
;* 但任何单位或个人都不能将此资料作为商业用品。本资料可能存在一些缺陷,
;* 如果你将本资料用于产品,所引起的一切后果,均由使用者承担
;* *
;**************************************************************************/
;----TMR0 initial----------------
; Name :TMR0_INIT
; Input :
; Output :
; Temp REG :
; RETURN PAGE : 0
; Function :TMR0 initialization,source from PA4, 0 to 1 active
;----------------------
TMR0_INIT:
MOVLW 0x00
MOVWF TMR0
MOVLW 0xFC
MOVWF OPTION_REG
BCF INTCON, T0IE
BANKSEL TRISA
BSF TRISA, 4
BANKSEL TMR0
RETURN
;----TMR0 initialization end---------
;
;-----TMR1 initial----------------------------
; Name :TMR1_INIT
; Input :
; Output :
; Temp REG :
; RETURN PAGE : 0
; Function :TMR1 initialization
; Note :source from Fosc/4, 10ms interrupt,pre_scale = 1 : 1,Fosc = 8MHz
; 65535-20000=45535=B1DFH
;----------------------
TMR1_INIT:
BCF INTCON, GIE
CLRF TMR1L
MOVLW 0xFF
MOVWF TMR1H
MOVLW 0xDF
MOVWF TMR1L
MOVLW 0x01
MOVWF T1CON
BANKSEL PIE1
BSF PIE1, TMR1IE
BANKSEL TMR1L
RETURN
;-----TMR1 initial end-----------------------
;-----------PWM initial subroutine--------------------
; Name :PWM_INT
; Input :void
; Output :void
; Temp REG :void
; RETURN PAGE : 0
; Function :PWM1,PWM2 initialization
; 10-bit mode,last two bits set to high ,duty set to 0.5
;-----------------------------------------------
PWM_INIT
BANKSEL CCPR1L
MOVLW 0x7F
MOVWF CCPR1L
MOVWF CCPR2L
MOVLW 0x3C
MOVWF CCP1CON
MOVWF CCP2CON
MOVLW 0x04
MOVWF T2CON
BANKSEL PR2
MOVLW 0xFF
MOVWF PR2
BCF TRISC, 2
BCF TRISC, 1
BCF PIE1, CCP1IE
BANKSEL TMR0
RETURN
;-------------PWM initial end--------------------------
;
;-------------AD initial-------------------------------
; Name :AD_INIT
; Input :void
; Output :void
; Temp REG :
; RETURN PAGE : 0
; Function :AD initialization
; 10-bit,high 6 bit set to 0,
;------------------------------------------
AD_INIT:
MOVLW 0x40
MOVWF ADCON0
BANKSEL ADCON1
MOVLW 0x82
MOVWF ADCON1
BANKSEL TMR0
RETURN
;-------------AD initial end--------------------------
;
;------------USART initial-----------------------------
;Name :USART_INIT
;Input :void
;Output :void
;Temp Reg :void
;Function :UART initialization
; data: 8bit, bitrate:19200 stopbit: 1 ;Asynchronous mode
;Bitrate = Fosc/(16(x+1))----> x = Fosc/(16*Bitrate) - 1
;-----------------------------------------------
USART_INIT:
BANKSEL TXSTA ;bank 1
MOVLW 0x24
MOVWF TXSTA
BSF PIE1, RCIE
MOVLW .25 ;19200
MOVWF SPBRG
BANKSEL RCSTA ;BANK 0
MOVLW 0x90
MOVWF RCSTA
;使能串口端;不接收第9位;NONE;允许连续接收
;寻址关闭;桢错误0;溢出错误0;接收的第9位0
RETURN
;------------I/O initial------------------------------
; Name :IO_INIT
; Input :void
; Output :void
; Temp REG :
; RETURN PAGE : 0(default setting)
; Function :I/O initialization
;------------------------------------------
IO_INIT:
BANKSEL TRISC
MOVLW 0x00
MOVWF TRISD
MOVWF TRISE
; MOVLW 0x81
MOVWF TRISC
MOVLW 0xFF
MOVWF TRISA
MOVWF TRISB
BANKSEL TMR0
RETURN
;----------I/O initial end---------------
;
;------GLOBAL VARIABLE initial--------------------------
; Name :G_VARIABLE_INIT
; Input :void
; Output :void
; Temp REG :void
; RETURN PAGE : 0
; Function :general variable initialization
;------------------------------------------
G_VARIABLE_INIT:
MOVLW 0x7f
MOVWF FSR
CLRF_LOOP:
CLRF INDF
DECF FSR, D
MOVF FSR, W
XORLW 0x1f
BTFSS STATUS, Z
GOTO CLRF_LOOP
RETURN
;------GLOBAL VARIABLE initial end
;
;------initial------------------------------
; Name :INITIAL
; Input :void
; Output :void
; Temp REG :
; RETURN PAGE : 0
; Function :System initialization
;------------------------------------------
INITIAL:
CALL IO_INIT
CALL TMR0_INIT
CALL TMR1_INIT
; CALL PWM_INIT
CALL AD_INIT
CALL G_VARIABLE_INIT
CALL LCD_INIT
CALL USART_INIT
CALL COMPANY_LOGO_DISP
CALL PROJECT_LOGO_DISP
MOVLW 0x00
CALL TITLE_DISP ;on screen of PC
MOVLW 0x01
CALL TITLE_DISP
BSF INTCON, PEIE
BSF INTCON, GIE
BSF ADCON0, ADON
RETURN
;------ initial end------------------------
;
;----------SETUP PARAMETER---------------------
; Name :SETUP_PARA
; Input :void
; Output :MUL16A,MUL16B
; TEMP REG :void
; RETURN BANK :0
; Function :SETUP PARAMETER FOR MULTIPLY
;----------------------------------------
SETUP_PARA_CUR:
MOVLW K_GAIN_CURHI
MOVWF MUL16AHI
MOVLW K_GAIN_CURLO
MOVWF MUL16ALO
GOTO SETUP_PARA_COM
SETUP_PARA_IREL:
SETUP_PARA_VCDS:
SETUP_PARA_VREF:
SETUP_PARA_OPDRV:
SETUP_PARA_OP1:
MOVLW K_GAIN_OP1HI
MOVWF MUL16AHI
MOVLW K_GAIN_OP1LO
MOVWF MUL16ALO
GOTO SETUP_PARA_COM
SETUP_PARA_OP2:
MOVLW K_GAIN_OP2HI
MOVWF MUL16AHI
MOVLW K_GAIN_OP2LO
MOVWF MUL16ALO
SETUP_PARA_COM:
MOVF AD_VAL_REGH, W
MOVWF MUL16BHI
MOVF AD_VAL_REGL, W
MOVWF MUL16BLO
return
;---------SETUP PARAMETER END--------------
;
;---------GET BCD DATA------------------
; Name :GET_BCD_DATA
; Input :void
; Output :TEMP0,TEMP1
; Temp REG :void
; Return bank :bank0
; Function :Get BCD data
;-----------------------------
GET_BCD_DATA:
MOVF MULRH8, W
MOVWF TEMP0
MOVF MULRL8, W
MOVWF TEMP1
return
;----------------------------------
;-----------Delay 10 us-------------------
; Name :DELAY_10US
; Input :TEMP5
; Output :void
; Temp reg :void
; Function :delay 10us
;-----------------------------
DELAY_10US:
MOVLW 0x06
MOVWF TEMP5
DELAY_10US_LOOP:
DECFSZ TEMP5
GOTO DELAY_10US_LOOP
RETURN
;-----------End of delay 10 us-------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -