Why aren't my 80C51 pins toggling?
Maybe you are running in a problem with the startup behavior of this chip.

In the data sheet on page 64 the Power-On Reset Code Execution is described. If you don't do anything to the special Status Byte the processor will start (by factory default) the internal boot ROM and not the application you have programmed.

It is suggested to program the status byte to 0x00, so that the code execution starts at address 0x0000. This is where your program is probably being put without any special treatment.

There is a section on how to erase and program the status byte via a record in the Intel-Hex-File on page 67:


  Miscellaneous Write Functions
  
  :nnxxxx03ffssddcc
  
  Where:
  
  nn = number of bytes (hex) in record
  
  xxxx = required field, but value is a “don’t care”
  
  03 = Write Function
  
  ff = subfunction code
  
  ss = selection code
  
  dd = data input (as needed)
  
  cc = checksum
  Subfunction Code = 04 (Erase Boot Vector and Status Byte)
  
  ff = 04
  
  ss = don’t care
  
  Example:
  
  :020000030400F7 erase boot vector and status byte
  
  Subfunction Code = 06 (Program Status Byte or Boot Vector)
  
  ff = 06
  
  ss = 00 program status byte
  
  01 program boot vector
  
  Example:
  
  :030000030601FCF7 program boot vector with 0FCH