I was wondering if anyone could check my code here and see if there are any boo-boo's.
I am not getting the results I have expected. I am using a 4021 shift register sending serial data out to the pic18F452.
I have buttons connected to the 4021 (parallel to serial chip) and send the bits out to the pic. I just wanted to test it by having the pic receive a byte (%00000001) and then light up an LED.
It worked intermittently, but not really.
Code:
'DEFINITIONS'
DEFINE OSC 20
DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 15
'serial registers
DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 20h
DEFINE HSER_BAUD 31250
'PORT SETUP'
TRISA = %11111111
ADCON1 = %10000010
'VARIABLES'
keys var byte
A_Button var byte
B_Button var byte
Select_Button var byte
Start_Button var byte
Up_Button var byte
Down_Button var byte
Left_Button var byte
Right_Button var byte
A_Button = %00000001
B_Button = %00000010
Select_Button = %00000100
Start_Button = %00001000
Up_Button = %00010000
Down_Button = %00100000
Left_Button = %01000000
Right_Button = %10000000
''Pin Assignments''
data_in var portb.7
latch var portb.6
clock var portb.5
main:
pulsout latch, 1 'toggle the latch pin
shiftin data_in, clock, 0, [keys]
if keys = A_Button then 'if A button pressed light LED on RB0
high portb.0
pause 1
low portb.0
endif
goto main
Bookmarks