📄 outputchar.asm
字号:
;/**************************************************************************
;* *
;* 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软件设计参考,任何人都可以转载此资料。
;* 但任何单位或个人都不能将此资料作为商业用品。本资料可能存在一些缺陷,
;* 如果你将本资料用于产品,所引起的一切后果,均由使用者承担
;* *
;**************************************************************************/
;
;-------COMPANY LOGO DISPLAY------------------
COMPANY_LOGO_DISP:
MOVLW 0x83
CALL COMAND_WR ;定义起始地址
MOVLW 0x00
MOVWF TEMP0
COMPANY_LOGO_DISP_LOOP:
MOVF TEMP0, W
PAGESEL TABLE_COMPANY_LOGO
CALL TABLE_COMPANY_LOGO
PAGESEL $
MOVWF TEMP1
SUBLW 0x20
BTFSC STATUS, Z
GOTO COMP_LOGO_DISP_END
MOVF TEMP1,W
CALL DATA_WR
INCF TEMP0
GOTO COMPANY_LOGO_DISP_LOOP
COMP_LOGO_DISP_END
return
;--------COMPANY LOGO DISPLAY END-------------
;
;--------PROJECT LOGO DISPLAY ----------------
PROJECT_LOGO_DISP:
MOVLW 0xc2
CALL COMAND_WR ;定义起始地址
MOVLW 0x00
MOVWF TEMP0
PROJECT_LOGO_DISP_LOOP:
MOVF TEMP0, W
PAGESEL TABLE_PROJECT_LOGO
CALL TABLE_PROJECT_LOGO
PAGESEL $
MOVWF TEMP1
SUBLW 0x20 ;'',空格符
BTFSC STATUS, Z
GOTO PROJECT_LOGO_DISP_END
MOVF TEMP1,W
CALL DATA_WR
INCF TEMP0
GOTO PROJECT_LOGO_DISP_LOOP
PROJECT_LOGO_DISP_END
return
;--------PROJECT LOGO DISPLAY END -------------
;--------LCD INITIALIZTION CHARACTER --------
TABLE_COMPANY_LOGO:
ADDWF PCL
DT "FPPA-TM "
TABLE_PROJECT_LOGO:
ADDWF PCL
DT "UART-EXTRA "
;--------LCD INITIALIZTION CHARACTER END------
;
;--------Title display---------------------------------
;Name :TITLE_DISP
;Input :WREG(TABLE SELECT,MAX =1)
;Output :display on screen ";***FPPA TM DEMO BOARD***
;Temp Reg :TEMP0,TEMP1,TEMP2(select table register)
;Function :
;-----------------------------------------------
TITLE_DISP:
MOVWF TEMP2
CLRF TEMP0
CLRF TEMP1
CALL ENTER_INPUT
TITLE_DISP_LOOP:
MOVLW 0x00
XORWF TEMP2, W
BTFSC STATUS, Z
GOTO SELECT_TABLE0
MOVLW 0x01
XORWF TEMP2, W
BTFSC STATUS, Z
GOTO SELECT_TABLE1
GOTO TITLE_DISP_RET
SELECT_TABLE0:
MOVF TEMP0, W
; PAGESEL TITLE_TABLE
CALL TITLE_TABLE
; PAGESEL $
GOTO TABLE_COM
SELECT_TABLE1:
MOVF TEMP0, W
CALL TEST_VAL_TABLE
TABLE_COM:
MOVWF TEMP1
XORLW '+'
BTFSC STATUS, Z
GOTO TITLE_DISP_RET
BTFSS PIR1, TXIF
GOTO $-1
MOVF TEMP1, W
MOVWF TXREG
MOVLW 0x0c
CALL DELAYTIME ;delay about 2ms
INCF TEMP0
GOTO TITLE_DISP_LOOP
TITLE_DISP_RET:
MOVLW 0x0c
CALL DELAYTIME ;delay about 2ms
CALL ENTER_INPUT
RETURN
TITLE_TABLE:
ADDWF PCL
DT ";*********FPPA TM DEMO BOARD***************+"
TEST_VAL_TABLE:
ADDWF PCL
DT ";TEST VOLTAGE =+"
;-------------TITLE DISPLAY END-------------------------
;
#if 0
;
;---------GET DISPLAY DATA-----------------
; Name :GET_DISP_DATA
; Input :void
; Output :DISP_DATA
; Temp REG :void
; Return bank :bank0
; Function :Get display data
;-----------------------------
GET_DISP_DATA:
MOVF TEMP4, W ;TEMP4,TEMP5 valid
ANDLW 0x0f
MOVWF DISP_DATA + 1
SWAPF TEMP4, W
ANDLW 0x0f
MOVWF DISP_DATA + 0
MOVF TEMP5, W
ANDLW 0x0f
MOVWF DISP_DATA + 3
SWAPF TEMP5, W
ANDLW 0x0f
MOVWF DISP_DATA + 2
return
;--------------------------------------
;
;--------OUTPUTDATA_P1-----------------------------------------
;Pistion :01(start point)
;Input :none
;Output :display charactor
;Temp reg :TEMP0
;Return bank :0
;Function :display Port1 data from start point
;display content:"P1=0xXX"
;--------------------------------------------------------------
OUTPUTDATA_P1:
MOVLW 0x81
CALL COMAND_WR
MOVLW 'P'
CALL DATA_WR
MOVLW '1'
CALL DATA_WR
MOVLW '='
CALL DATA_WR
MOVLW '0'
CALL DATA_WR
MOVLW 'x'
CALL DATA_WR
MOVF DISP_DATA + 0, W
CALL DATA_WR
MOVF DISP_DATA + 1, W
CALL DATA_WR
RETURN
;-------THE END OF OUTPUTDATA_P1------------------------------
;--------LCD_CLR_LINE1 EDN-------------------------------------
;
;--------OUTPUTDATA_P1-----------------------------------------
;Pistion :01(start point)
;Input :none
;Output :display charactor
;Temp reg :TEMP0
;Return bank :0
;Function :display Port1 data from start point
;display content:"P1=0xXX"
;--------------------------------------------------------------
OUTPUTDATA_P1:
MOVLW 0x81
CALL COMAND_WR
MOVLW 'P'
CALL DATA_WR
MOVLW '1'
CALL DATA_WR
MOVLW '='
CALL DATA_WR
MOVLW '0'
CALL DATA_WR
MOVLW 'x'
CALL DATA_WR
MOVF DISP_DATA + 0, W
CALL DATA_WR
MOVF DISP_DATA + 1, W
CALL DATA_WR
RETURN
;-------THE END OF OUTPUTDATA_P1------------------------------
;
#endif
;-------ONE NIDDLE HEX CHARACTOR CONVERT------------------------
;Name :HEX_OUTPUT
;Input :W(one niddle hex )
;Output :W(acsii charactor)
;Temp REG :TEMP0
;Function :ONE BYTE HEX CHARACTOR
;------------------------------------------------------
HEX_OUTPUT:
MOVWF TEMP0
SUBLW 0x09
BTFSS STATUS, C
GOTO SENT_CHARACTOR
MOVF TEMP0, W
ADDLW 0x30
GOTO SENT_DISPDATA
SENT_CHARACTOR:
MOVF TEMP0, W
ADDLW 0x37
SENT_DISPDATA:
RETURN
;-------THE END OF ONE NIDDLE HEX CHARACTOR CONVERT-----
;
;-------LCD_CLR_LINE1----------------------------------------
; Name :LCD_CLR_LINE1
; Input :void
; Output :
; Temp REG :TEMP14
; Return bank :bank0
; Function :Clear all charactor in first line on LCD
;-----------------------------
LCD_CLR_LINE1:
CLRF TEMP14
MOVLW 0x80
CALL COMAND_WR
CLR_LINE1_LOOP:
MOVLW ' '
CALL DATA_WR
INCF TEMP14
MOVF TEMP14, W
XORLW 0x10
BTFSS STATUS, Z
GOTO CLR_LINE1_LOOP
RETURN
;--------LCD_CLR_LINE1 EDN-------------------------------------
;
;-------LCD_CLR_LINE2----------------------------------------
; Name :LCD_CLR_LINE1
; Input :void
; Output :
; Temp REG :TEMP14
; Return bank :bank0
; Function :Clear all charactor in first line on LCD
;-----------------------------
LCD_CLR_LINE2:
CLRF TEMP14
MOVLW 0xc0
CALL COMAND_WR
CLR_LINE2_LOOP:
MOVLW ' '
CALL DATA_WR
INCF TEMP14
MOVF TEMP14, W
XORLW 0x10
BTFSS STATUS, Z
GOTO CLR_LINE2_LOOP
RETURN
;--------LCD_CLR_LINE1 EDN-------------------------------------
;
;--------LCD_DRIVE---------------------------------------------
;Name :LCD_DRIVE
;Input :
;Output :
;Temp REG :
;Function :根据不同的状态模式,输出LCD显示信息
;-------------------------------------------------------
LCD_DRIVE:
BCF TIMER_FLAG, LCD_DRIVE_FLAG
BTFSS LCD_DRV_REQ, G_LCD_DRV_REQ
GOTO LCD_DRIVE_RET
BTFSS SYS_STATUS, UART_SENT_EN
GOTO CHECK_RECEIVE_REQ
BTFSC LCD_DRV_REQ, S_LCD_DRV_REQ
GOTO SENT_DATA_LCD_DRV
CHECK_RECEIVE_REQ:
BTFSC LCD_DRV_REQ, R_LCD_DRV_REQ
GOTO RECEIVE_DATA_LCD_DRV
BCF LCD_DRV_REQ, G_LCD_DRV_REQ
LCD_DRIVE_RET:
RETURN
SENT_DATA_LCD_DRV:
;" SEND MODE "
;" TX=0xXX to PX "
BCF LCD_DRV_REQ, S_LCD_DRV_REQ
; CALL LCD_CLR
MOVLW 0x80
CALL COMAND_WR
MOVLW ' '
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
MOVLW 'S'
CALL DATA_WR
MOVLW 'E'
CALL DATA_WR
MOVLW 'N'
CALL DATA_WR
MOVLW 'D'
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
MOVLW 'M'
CALL DATA_WR
MOVLW 'O'
CALL DATA_WR
MOVLW 'D'
CALL DATA_WR
MOVLW 'E'
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
;
MOVLW 0xC0
CALL COMAND_WR
MOVLW ' '
CALL DATA_WR
MOVLW 'T'
CALL DATA_WR
MOVLW 'X'
CALL DATA_WR
MOVLW '='
CALL DATA_WR
MOVLW '0'
CALL DATA_WR
MOVLW 'x'
CALL DATA_WR
MOVF DISP_DATAS + 0, W
CALL DATA_WR
MOVF DISP_DATAS + 1, W
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
MOVLW 't'
CALL DATA_WR
MOVLW 'O'
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
MOVLW 'P'
CALL DATA_WR
MOVF MODE_REG, W
ANDLW 0x0F
ADDLW 0x01
CALL HEX_OUTPUT
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
GOTO LCD_DRIVE_RET
;-------
RECEIVE_DATA_LCD_DRV:
;"R1=0xXX "
;"R2=0xXX R3=0xXX "
BCF LCD_DRV_REQ, R_LCD_DRV_REQ
; CALL LCD_CLR
MOVLW 0x80
CALL COMAND_WR
MOVLW 'R'
CALL DATA_WR
MOVLW '1'
CALL DATA_WR
MOVLW '='
CALL DATA_WR
MOVLW '0'
CALL DATA_WR
MOVLW 'x'
CALL DATA_WR
SWAPF RX_DATA1, W
ANDLW 0x0F
CALL HEX_OUTPUT
CALL DATA_WR
MOVF RX_DATA1, W
ANDLW 0x0F
CALL HEX_OUTPUT
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
;
MOVLW 0xC0
CALL COMAND_WR
MOVLW 'R'
CALL DATA_WR
MOVLW '2'
CALL DATA_WR
MOVLW '='
CALL DATA_WR
MOVLW '0'
CALL DATA_WR
MOVLW 'x'
CALL DATA_WR
SWAPF RX_DATA2, W
ANDLW 0x0F
CALL HEX_OUTPUT
CALL DATA_WR
MOVF RX_DATA2, W
ANDLW 0x0F
CALL HEX_OUTPUT
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
;
MOVLW 'R'
CALL DATA_WR
MOVLW '3'
CALL DATA_WR
MOVLW '='
CALL DATA_WR
MOVLW '0'
CALL DATA_WR
MOVLW 'x'
CALL DATA_WR
SWAPF RX_DATA3, W
ANDLW 0x0F
CALL HEX_OUTPUT
CALL DATA_WR
MOVF RX_DATA3, W
ANDLW 0x0F
CALL HEX_OUTPUT
CALL DATA_WR
MOVLW ' '
CALL DATA_WR
GOTO LCD_DRIVE_RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -