??? 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 |