|
|
View previous topic :: View next topic |
Author |
Message |
louarnold
Joined: 13 May 2010 Posts: 42 Location: Ottawa, Canada
|
Help: Confused about Assembly listing. |
Posted: Thu Jul 01, 2010 9:27 am |
|
|
I'm not that familiar with the 16F877A. Can someone please explain the following instructions from an assembly listing of a C program.
Code: |
.................... output_low(EEPROM_SELECT);
0072: BSF 03.5 ;0x03=status register; 5 means set RP0 bit to 1.
0073: BCF 06.4 ;Clear bit4 of register 6 (Port B)
0074: BCF 03.5 ;Clear RP0 (why?)
0075: BCF 06.4 ;Clear bit 4 of register 6 again?
|
where EEPROM_SELECT is pin B4. This code comes from a 9356 EEPROM chip I/O utility in C.
I tried reading the data sheet, but I can only guess to the following explanation:
At 72, RP1 and RP2 of the status are set to do a bank select (bank1). (Why??)
At 73, it clears the bit B4 of the PORTB register.
At 74, the RP0 and RP1 are cleared to select bank 0, but again, why?
At 75, the PORTB register is set to zero again. Why? |
|
|
louarnold
Joined: 13 May 2010 Posts: 42 Location: Ottawa, Canada
|
|
Posted: Thu Jul 01, 2010 10:07 am |
|
|
OK, I worked it out after finding the TRISB register:
At 72, RP0 (reg 3,bit 5) in the status register is set to 1. This switches access to register bank 1. This bank has the TRISB register in it.
At 73, bit 4 of the TRISB register(reg 6) is set to zero. This sets the PORTB register for output.
At 74, RP0 (reg3, bit 5) of the status register is set to zero. This switches back to register bank 0 and gives access to the PORTB register itself.
At 75, bit 4 of the PORTB register (reg 6) is set to zero (low).
At 20Mhz (xtal), that's at least 4 x 0.2uS = 800nS.
Let me know if I missed something. |
|
|
bkamen
Joined: 07 Jan 2004 Posts: 1615 Location: Central Illinois, USA
|
|
Posted: Thu Jul 01, 2010 1:14 pm |
|
|
Consider changed your first topic subject to include [SOLVED] so people know you got it.
-Ben _________________ Dazed and confused? I don't think so. Just "plain lost" will do. :D |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|