Code:
'****************************************************************
'* Name : HSERIN-LedMatrix-4550 @ 20Mhz *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2012 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 6/15/2012 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
'Hserin with Darryl Taylor's Instant Interrupts
'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
asm
__CONFIG _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L
__CONFIG _CONFIG1H, _FOSC_HSPLL_HS_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
__CONFIG _CONFIG2L, _PWRT_ON_2L & _BOR_ON_2L & _BORV_2_2L & _VREGEN_ON_2L
__CONFIG _CONFIG2H, _WDT_OFF_2H
__CONFIG _CONFIG3H, _MCLRE_ON_3H & _LPT1OSC_OFF_3H & _PBADEN_OFF_3H & _CCP2MX_ON_3H
__CONFIG _CONFIG4L, _STVREN_ON_4L & _LVP_OFF_4L & _ICPRT_OFF_4L & _XINST_OFF_4L & _DEBUG_OFF_4L
endasm
DEFINE OSC 48
DEFINE HSER_RCSTA 90h ' enable serial port,
DEFINE HSER_TXSTA 20h ' enable transmit,
DEFINE HSER_BAUD 9600
DEFINE HSER_CLOERR 1 ' automatic clear overrun error
TRISC = %10000000 ' PORTC.7 is the RX input, PORTC.6 is the TX output
' Serial communication definition
' ===============================
'
ADCON1 = %00001111 'Set up ADCON1 register no matter what you're doing!!!!!!
'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
INCLUDE "MODEDEFS.BAS" ' Include Shiftin/out modes
INCLUDE "DT_INTS-18.bas" ' Base Interrupt System
INCLUDE "ReEnterPBP-18.bas" ' Include if using PBP interrupts
'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
' Variable definition
'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
c var byte
c = 0
clear
g var byte
g=0
flag1 var byte
flag1 = 0
myArray VAR BYTE[300]
Reset:
;((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((9
select case flag1
case 1
clear
HSEROUT ["Flag1=1 ",13]
myArray[0]="P" ' When you do this the string is stored in RAM
myArray[1]="I"
myArray[2]="C"
myArray[3]="B"
myArray[4]="A"
myArray[5]="S"
myArray[6]="I"
myArray[7]="C"
myArray[8]="2"
myArray[9]="."
myArray[10]="6"
flag1 = 1
case 2
clear
HSEROUT ["Flag1=2 ",13]
myArray[0]="M" ' When you do this the string is stored in RAM
myArray[1]="I"
myArray[2]="C"
myArray[3]="R"
myArray[4]="C"
myArray[5]="H"
myArray[6]="I"
myArray[7]="P"
myArray[8]=" "
myArray[9]="C"
myArray[10]="P"
flag1 = 2
case 0
clear
HSEROUT ["Flag1=0 ",13]
myArray[0]="H" ' When you do this the string is stored in RAM
myArray[1]="E"
myArray[2]="L"
myArray[3]="L"
myArray[4]="O"
myArray[5]=" "
myArray[6]="W"
myArray[7]="O"
myArray[8]="R"
myArray[9]="L"
myArray[10]="D"
flag1 = 0
case 3
HSEROUT ["Flag1=3 ",13]
flag1=3
g = 0
End select
;(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
ADCON1 = 15 ' Set all I/Os to Digital
CMCON = 7 ' Disable Comparators
TRISA = %00000000
TRISE = %00000000
TRISD = %00000000
PORTD = %00000000
TRISB = %00000000 ' Set Keypad I/O
TRISC = %10000000 ' Set Keypad I/O
PORTC = 0
PORTB = 0 ' Set columns LOW
PortA = 0
PORTD = 0
PORTE = 0
HSEROUT ["Restart ",13]
harf_reg var byte
adres_sec var byte
yinele var byte
sutun_reg var byte[300]
veri var byte
yazi_reg var byte
i VAR BYTE
x var byte
z var byte
y var byte
t var byte
q var byte
sure var byte
yedek var byte
;myArray VAR BYTE[11]
'*****************************************************************************
RCIF VAR PIR1.5 ' Receive interrupt flag (1=full , 0=empty)
TXIF VAR PIR1.4 ' Transmit interrupt flag (1=empty, 0=full)
led var PORTC.0
led1 var PORTC.1
led5 var PORTC.5
holdoff var word
SerialData var byte
SerialInput var byte[50]
portd=255:sure=200
ASM
INT_LIST macro ; IntSource, Label, Type, ResetFlag?
INT_Handler RX_INT, _Getbytes, PBP, no
endm
INT_CREATE ; Creates the interrupt processor
ENDASM
@ INT_ENABLE RX_INT ; enable RX_INT interrupts
'((((((((((((((((((((((((((((((((((((((()))))))))))))))))))))))))))))))))))))))
' Subroutine to slow loop down some and toggle heartbeat
'((((((((((((((((((((((((((((((((((((((()))))))))))))))))))))))))))))))))))))))
Mainloop:
GOTO oku:
oku:
if flag1 < 3 then
z=10
else
z = c
ENdif
for i=0 to z
'**************************************************************************
'*************************************************************************
if flag1 < 3 then
harf_reg = myArray[i]
else
harf_reg = SerialInput[i]
Endif
GOSUB data_sec
for y=0 to yinele
GOSUB datalar
sutun_reg[t]=veri : t=t+1
adres_sec=adres_sec+1
next y
next i
t=0
goto gonder
gonder:
FOR Q=0 TO 5
for i=0 to 15
portb=sutun_reg[t] : t=t+1
porta=i
portd=%111111110:PAUSEUS sure:portd=%11111111
next i
for i=0 to 15
portb=sutun_reg[t] : t=t+1
porta=i
portd=%11111101:pauseus sure:portd=%11111111
next i
for i=0 to 15
portb=sutun_reg[t] : t=t+1
porta=i
portd=%11111011:pauseus sure:portd=%11111111
next i
for i=0 to 15
portb=sutun_reg[t] : t=t+1
porta=i
portd=%11110111:pauseus sure:portd=%11111111
next i
for i=0 to 11
portb=sutun_reg[t] : t=t+1
porta=i
portd=%11101111:pauseus sure:portd=%11111111
next i
t=0
NEXT Q
goto kaydir
gosub datadisplay
goto Mainloop
'((((((((((((((((((((((((((((((((((((((()))))))))))))))))))))))))))))))))))))))
'ISR for RX_int interrupt
'((((((((((((((((((((((((((((((((((((((()))))))))))))))))))))))))))))))))))))))
Getbytes:
While RCIF = 1 ' clear the buffer
c = c + 1
HSERIN 100,error,[Serialdata] ' take it
HSEROUT [Serialdata] ' take it out
select case Serialdata ' What to do with that data???
case "A" ' User selection = 1
HSEROUT ["Change to A message",13] ' take it out
flag1 = 1
goto Reset
case "B"
HSEROUT ["Change to B message",13] ' take it out
flag1 = 2
goto Reset
case "C"
HSEROUT ["Change to C message",13] ' take it out
flag1 = 0
goto Reset
case "^"
HSEROUT ["Change to Custom message",13] ' take it out
flag1 = 3
For i = 0 to (10)
myArray[i] = 0
NEXT
goto Reset
case else
SerialInput[c] = Serialdata
End select
Wend
toggle led 'led to confirm program went to RX ISR
'*******************************************************************************
@ INT_RETURN
error:
Toggle led1
@ INT_RETURN
end
;*****************************************************************************
datadisplay:
kaydir:
'''''''''''''''''''''''''''''''''''''''''''''''''''''
'serout2 PortC.5,T9600,[254,129,myArray] 'myArray[i]
;serout PortC.5,T9600,[254,192,"MicroBox"]
'''''''''''''''''''''''''''''''''''''''''''''''''''''
yedek=sutun_reg[0]
for i=0 to 239
sutun_reg[i]=sutun_reg[i+1] ' this is for moving characters
next i
sutun_reg[240]=yedek
' ----------goback to main
goto gonder
return
data_sec:
select case harf_reg
case "A"
adres_sec=0 : yinele=5 : return
case "B"
adres_sec=6 : yinele=5 : return
case "C"
adres_sec=12 : yinele=5 : return
case "D"
adres_sec=18 : yinele=5 : return
case "E"
adres_sec=24 : yinele=5 : return
case "F"
adres_sec=30 : yinele=5 : return
case "G"
adres_sec=36 : yinele=5 : return
case "H"
adres_sec=42 : yinele=5 : return
case "I"
adres_sec=48 : yinele=3 : return
case "i"
adres_sec=52 : yinele=3 : return
case "J"
adres_sec=56 : yinele=5 : return
case "K"
adres_sec=62 : yinele=5 : return
case "L"
adres_sec=68 : yinele=5 : return
case "M"
adres_sec=74 : yinele=5 : return
case "N"
adres_sec=80 : yinele=5 : return
case "O"
adres_sec=86 : yinele=5 : return
case "P"
adres_sec=92 : yinele=5 : return
case "Q"
adres_sec=98 : yinele=5 : return
case "R"
adres_sec=104 : yinele=5 : return
case "S"
adres_sec=110 : yinele=5 : return
case "T"
adres_sec=116 : yinele=5 : return
case "U"
adres_sec=122 : yinele=5 : return
case "ü"
adres_sec=128 : yinele=5 : return
case "V"
adres_sec=134 : yinele=5 : return
case "W"
adres_sec=140 : yinele=5 : return
case "X"
adres_sec=146 : yinele=5 : return
case "Y"
adres_sec=152 : yinele=5 : return
case "Z"
adres_sec=158 : yinele=5 : return
case " "
adres_sec=164 : yinele=5 : return
case "0"
adres_sec=170 : yinele=5 : return
case "1"
adres_sec=176 : yinele=3 : return
case "2"
adres_sec=180 : yinele=5 : return
case "3"
adres_sec=186 : yinele=5 : return
case "4"
adres_sec=192 : yinele=5 : return
case "5"
adres_sec=198 : yinele=5 : return
case "6"
adres_sec=204 : yinele=5 : return
case "7"
adres_sec=210 : yinele=5 : return
case "8"
adres_sec=216 : yinele=5 : return
case "9"
adres_sec=222 : yinele=5 : return
end select
datalar:
lookup adres_sec,[$7C,$0A,$09,$0A,$7C,0_ ;A
,$7F,$49,$49,$49,$36,0_ ;B
,$3E,$41,$41,$41,$22,0_ ;C
,$7F,$41,$41,$41,$3E,0_ ;D
,$7F,$49,$49,$49,$41,0_ ;E
,$7F,$09,$09,$09,$01,0_ ;F
,$3E,$41,$49,$49,$3A,0_ ;G
,$7F,$08,$08,$08,$7F,0_ ;H
,$41,$7F,$41,0_ ;I
,$44,$7D,$44,0_ ;Ý
,$20,$40,$41,$3F,$01,0_ ;J
,$7F,$08,$14,$22,$41,0_ ;K
,$7F,$40,$40,$40,$40,0_ ;L
,$7F,$02,$04,$02,$7F,0_ ;M
,$7F,$04,$08,$10,$7F,0_ ;N
,$3E,$41,$41,$41,$3E,0_ ;O
,$7F,$09,$09,$09,$06,0_ ;P
,$3E,$41,$51,$61,$3E,0_ ;Q
,$7F,$09,$19,$29,$46,0_ ;R
,$26,$49,$49,$49,$32,0_ ;S
,$01,$01,$7F,$01,$01,0_ ;T
,$3F,$40,$40,$40,$3F,0_ ;U
,$1E,$41,$01,$41,$1E,0_ ;Ü
,$1F,$20,$40,$20,$1F,0_ ;V
,$3F,$40,$30,$40,$3F,0_ ;W
,$63,$14,$08,$14,$63,0_ ;X
,$07,$08,$70,$08,$07,0_ ;Y
,$61,$51,$49,$45,$43,0_ ;Z
,$00,$00,$00,$00,$00,0_ ;Space
,$3E,$51,$49,$45,$3E,0_ ;0
,$42,$7F,$40,0_ ;1
,$62,$51,$49,$45,$42,0_ ;2
,$22,$49,$49,$49,$36,0_ ;3
,$18,$14,$12,$7F,$10,0_ ;4
,$2F,$49,$49,$49,$31,0_ ;5
,$3E,$49,$49,$49,$32,0_ ;6
,$61,$11,$09,$05,$03,0_ ;7
,$36,$49,$49,$49,$36,0_ ;8
,$26,$49,$49,$49,$3E,0],veri ;9
return
Kind regards,
Bookmarks