Skip to content

Instantly share code, notes, and snippets.

@cocus
Created October 24, 2023 21:39
Show Gist options
  • Save cocus/c6305ea07c51966476ed3a5a8334ec62 to your computer and use it in GitHub Desktop.
Save cocus/c6305ea07c51966476ed3a5a8334ec62 to your computer and use it in GitHub Desktop.
i51f.cfg
; Note, add this to the i51.cfg on your ida installation dir.
; The aim is to add support for the Intel 80C51FA CPU, which is a
; 80C51 variant.
; This is the revision 1 of this gist
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.80C51FA
; https://www.keil.com/dd/docs/c51/intel/reg51f.h
; MEMORY MAP
area CODE code 0x0000:0x10000
area DATA RAM 0x0000:0x0100
area DATA FSR 0x0080:0x0100
; Interrupt and reset vector assignments
entry RESET 0x0000 RESET
entry X0 0x0003 External interrupt 0
entry T0 0x000B Timer 0 overflow
entry X1 0x0013 External interrupt 1
entry T1 0x001B Timer 1 overflow
entry SP0 0x0023 Serial Port
entry T2 0x002B Timer 2
entry PCA 0x0033 PCA
; INPUT/OUTPUT PORTS
P0 0x0080 Port 0
P0.AD7 7
P0.AD6 6
P0.AD5 5
P0.AD4 4
P0.AD3 3
P0.AD2 2
P0.AD1 1
P0.AD0 0
SP 0x0081 Stack Pointer
DPL 0x0082 Data Pointer, Low Byte
DPH 0x0083 Data Pointer, High Byte
RESERVED0084 0x0084 RESERVED
RESERVED0085 0x0085 RESERVED
RESERVED0086 0x0086 RESERVED
PCON 0x0087 Power control
TCON 0x0088 Timer control
TCON.TF1 7
TCON.TR1 6
TCON.TF0 5
TCON.TR0 4
TCON.IE1 3
TCON.IT1 2
TCON.IE0 1
TCON.IT0 0
TMOD 0x0089 Timer mode
TL0 0x008A Timer low 0
TL1 0x008B Timer low 1
TH0 0x008C Timer high 0
TH1 0x008D Timer high 1
AUXR 0x008E Auxiliary
RESERVED008F 0x008F RESERVED
P1 0x0090 Port 1
P1.CEX4 7
P1.CEX3 6
P1.CEX2 5
P1.CEX1 4
P1.CEX0 3
P1.ECI 2
P1.T2EX 1
P1.T2 0
RESERVED0091 0x0091 RESERVED
RESERVED0092 0x0092 RESERVED
RESERVED0093 0x0093 RESERVED
RESERVED0094 0x0094 RESERVED
RESERVED0095 0x0095 RESERVED
RESERVED0096 0x0096 RESERVED
RESERVED0097 0x0097 RESERVED
SCON 0x0098 Serial control
SCON.SM0 7
SCON.SM1 6
SCON.SM2 5
SCON.REN 4
SCON.TB8 3
SCON.RB8 2
SCON.TI 1
SCON.RI 0
SBUF 0x0099 Serial data buffer
RESERVED009A 0x009A RESERVED
RESERVED009B 0x009B RESERVED
RESERVED009C 0x009C RESERVED
RESERVED009D 0x009D RESERVED
RESERVED009E 0x009E RESERVED
RESERVED009F 0x009F RESERVED
P2 0x00A0 Port 2
P2.AD15 7
P2.AD14 6
P2.AD13 5
P2.AD12 4
P2.AD11 3
P2.AD10 2
P2.AD9 1
P2.AD8 0
RESERVED00A1 0x00A1 RESERVED
AUXR1 0x00A2 Auxiliary 1
RESERVED00A3 0x00A3 RESERVED
RESERVED00A4 0x00A4 RESERVED
RESERVED00A5 0x00A5 RESERVED
RESERVED00A6 0x00A6 RESERVED
RESERVED00A7 0x00A7 RESERVED
IE 0x00A8 Interrupt Enable
IE.EA 7
IE.EC 6
IE.ET2 5
IE.ES 4
IE.ET1 3
IE.EX1 2
IE.ET0 1
IE.EX0 0
SADDR 0x00A9 Slave Address
RESERVED00AA 0x00AA RESERVED
RESERVED00AB 0x00AB RESERVED
RESERVED00AC 0x00AC RESERVED
RESERVED00AD 0x00AD RESERVED
RESERVED00AE 0x00AE RESERVED
RESERVED00AF 0x00AF RESERVED
P3 0x00B0 Port 3
P3.RD 7
P3.WR 6
P3.T1 5
P3.T0 4
P3.INT1 3
P3.INT0 2
P3.TXD 1
P3.RXD 0
RESERVED00B1 0x00B1 RESERVED
RESERVED00B2 0x00B2 RESERVED
RESERVED00B3 0x00B3 RESERVED
RESERVED00B4 0x00B4 RESERVED
RESERVED00B5 0x00B5 RESERVED
RESERVED00B6 0x00B6 RESERVED
IPH 0x00B7 Interrupt Priority High
IP 0x00B8 Interrupt priority
IP.PPC 6
IP.PT2 5
IP.PS 4
IP.PT1 3
IP.PX1 2
IP.PT0 1
IP.PX0 0
SADEN 0x00B9 Slave Address Mask
RESERVED00BA 0x00BA RESERVED
RESERVED00BB 0x00BB RESERVED
RESERVED00BC 0x00BC RESERVED
RESERVED00BD 0x00BD RESERVED
RESERVED00BE 0x00BE RESERVED
RESERVED00BF 0x00BF RESERVED
RESERVED00C0 0x00C0 RESERVED
RESERVED00C1 0x00C1 RESERVED
RESERVED00C2 0x00C2 RESERVED
RESERVED00C3 0x00C3 RESERVED
RESERVED00C4 0x00C4 RESERVED
RESERVED00C5 0x00C5 RESERVED
RESERVED00C6 0x00C6 RESERVED
RESERVED00C7 0x00C7 RESERVED
T2CON 0x00C8 Timer 2 Control
T2CON.TF2 7
T2CON.EXF2 6
T2CON.RCLK 5
T2CON.TCLK 4
T2CON.EXEN2 3
T2CON.TR2 2
T2CON.CT2 1
T2CON.CPRL2 0
T2MOD 0x00C9 Timer 2 Mode Control
RACAP2L 0x00CA Timer 2 Capture Low
RACAP2H 0x00CB Timer 2 Capture High
TL2 0x00CC Timer Low 2
TH2 0x00CD Timer High 2
RESERVED00CE 0x00CE RESERVED
RESERVED00CF 0x00CF RESERVED
PSW 0x00D0 Program Status Word Register
PSW.CY 7 Carry Flag
PSW.AC 6 Auxiliary Carry Flag
PSW.F0 5 General Purpose Flag
PSW.RS1 4 Register Bank Select Control Bit 1
PSW.RS0 3 Register Bank Select Control Bit 0
PSW.OV 2 Overflow Flag
PSW.P 0 Parity Flag
RESERVED00D1 0x00D1 RESERVED
RESERVED00D2 0x00D2 RESERVED
RESERVED00D3 0x00D3 RESERVED
RESERVED00D4 0x00D4 RESERVED
RESERVED00D5 0x00D5 RESERVED
RESERVED00D6 0x00D6 RESERVED
RESERVED00D7 0x00D7 RESERVED
CCON 0x00D8 PCA Counter Control
CCON.CF 7
CCON.CR 6
CCON.CCF4 4
CCON.CCF3 3
CCON.CCF2 2
CCON.CCF1 1
CCON.CCF0 0
CMOD 0x00D9 PCA Counter Mode
CCAPM0 0x00DA Module 0 Mode
CCAPM1 0x00DB Module 1 Mode
CCAPM2 0x00DC Module 2 Mode
CCAPM3 0x00DD Module 3 Mode
CCAPM4 0x00DE Module 4 Mode
RESERVED00DF 0x00DF RESERVED
ACC 0x00E0 Accumulator
ACC.ACC7 7
ACC.ACC6 6
ACC.ACC5 5
ACC.ACC4 4
ACC.ACC3 3
ACC.ACC2 2
ACC.ACC1 1
ACC.ACC0 0
RESERVED00E1 0x00E1 RESERVED
RESERVED00E2 0x00E2 RESERVED
RESERVED00E3 0x00E3 RESERVED
RESERVED00E4 0x00E4 RESERVED
RESERVED00E5 0x00E5 RESERVED
RESERVED00E6 0x00E6 RESERVED
RESERVED00E7 0x00E7 RESERVED
RESERVED00E8 0x00E8 RESERVED
CL 0x00E9 PCA Counter Low
CCAP0L 0x00EA Module 0 Capture Low
CCAP1L 0x00EB Module 1 Capture Low
CCAP2L 0x00EC Module 2 Capture Low
CCAP3L 0x00ED Module 3 Capture Low
CCAP4L 0x00EE Module 4 Capture Low
RESERVED00EF 0x00EF RESERVED
B 0x00F0 B Register
B.B7 7
B.B6 6
B.B5 5
B.B4 4
B.B3 3
B.B2 2
B.B1 1
B.B0 0
RESERVED00F1 0x00F1 RESERVED
RESERVED00F2 0x00F2 RESERVED
RESERVED00F3 0x00F3 RESERVED
RESERVED00F4 0x00F4 RESERVED
RESERVED00F5 0x00F5 RESERVED
RESERVED00F6 0x00F6 RESERVED
RESERVED00F7 0x00F7 RESERVED
RESERVED00F8 0x00F8 RESERVED
CH 0x00F9 PCA Counter High
CCAP0H 0x00FA Module 0 Capture High
CCAP1H 0x00FB Module 1 Capture High
CCAP2H 0x00FC Module 2 Capture High
CCAP3H 0x00FD Module 3 Capture High
CCAP4H 0x00FE Module 4 Capture High
RESERVED00FF 0x00FF RESERVED
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment