| ??? 12/28/09 11:50 Modified: 12/28/09 11:51 Read: times |
#171979 - Working new code part Responding to: ???'s previous message |
Modified new code according to Jan Waclawec's suggestion as follows
cseg AT 0000H
jmp codstr
.
.
.
cseg AT 0050H
codstr: ;(program code starts here)
.
.
.
setb QH ;(set Port as input)
setb CLKINH ;(prevent clock signal's rising edges accidently)
clr CLKP ;NEWLY ADDED!!! (clear clock signal initially)
.
.
.
mov WAITFW,#32 ;(enough to meet all propagation time)
.
.
.
prgstr: ;(main program loop starts here)
.
.
.
clr SHLD ;(reset SH/LD input of 74HC165 to get parallel inputs to register)
call WFW ;(wait for a while for progopation time)
setb SHLD ;(set SH/LD input of 74HC165 to read parallel inputs. this freezes the register)
call WFW ;
clr CLKINH ;(reset Clock Inhibit input of 74HC165 to enable clock input of 74HC165)
call WFW ;
mov PLSCNT,#8 ;(rise clock for 8 times)
pr1: mov C,QH ;(3)ROW CHANGED!!!(..then read the serial output)
rlc A ;(4)ROW CHANGED!!!
setb CLK ;(1)(set Clock input of 74HC165, rising edge of clock..)
call WFW ;(2)
clr CLK ;(5)
call WFW ;(6)
djnz PLSCNT,pr1 ;(7)(8-bit completed?)
mov FRST8,A ;(8)(get first 8-bit)
mov PLSCNT,#8 ;(same as the first part)
pr2: mov C,QH ;(3)ROW CHANGED!!!
rlc A ;(4)ROW CHANGED!!!
setb CLK ;(1)
call WFW ;(2)
clr CLK ;(5)
call WFW ;(6)
djnz PLSCNT,pr2 ;(7)
mov SCND8,A ;(8)(get second 8-bit)
setb CLKINH ;(disable clock input of 74HC165)
call WFW ;
.
.
.
jmp prgstr ;(end of main loop)
.
.
.
WFW: djnz WAITFW,$ ;(simple code to wait for a while)
mov WAITFW,#32
ret
.
.
.
DSEG AT 30H
FRST8: DS 1
SCND8: DS 1
WAITFW: DS 1
PLSCNT: DS 1
.
.
.
QH EQU P3.5
SHLD EQU P3.4
CLK EQU P3.3
CLKINH EQU P1.2
.
.
.
end
|



