;***************************************************************; ;***************************************************************; ;** Library Functions for the 8051 **; ;** UW ECE 453 Computer Labs **; ;** (c) 1997 University of Wisconsin **; ;** **; ;***************************************************************; ;***************************************************************; ;***************************************************************; ;** ASCII characters **; ;***************************************************************; NUL: equ 0x00 ; ASCII null character BEL: equ 0x07 ; ASCII bell BS: equ 0x08 ; ASCII backspace TAB: equ 0x09 ; ASCII tab LF: equ 0x0a ; ASCII line-feed CLS: equ 0x0c ; Clear screen CR: equ 0x0d ; ASCII carriage return ;***************************************************************; ;** Register and flag definitions **; ;***************************************************************; P0: equ 0x80 ; Port 0 / AD0-7 P0.0: equ 0x80 ; Port 0 bit 0 P0.1: equ 0x81 ; Port 0 bit 1 P0.2: equ 0x82 ; Port 0 bit 2 P0.3: equ 0x83 ; Port 0 bit 3 P0.4: equ 0x84 ; Port 0 bit 4 P0.5: equ 0x85 ; Port 0 bit 5 P0.6: equ 0x86 ; Port 0 bit 6 P0.7: equ 0x87 ; Port 0 bit 7 SP: equ 0x81 ; Stack pointer DPL: equ 0x82 ; Data pointer low byte DPH: equ 0x83 ; Data pointer high byte PCON: equ 0x87 ; Power control register TCON: equ 0x88 ; Timer control register IT0: equ 0x88 ; External interrupt 0 type IE0: equ 0x89 ; External interrupt 0 edge detected IT1: equ 0x8a ; External interrupt 1 type IE1: equ 0x8b ; External interrupt 1 edge detected TR0: equ 0x8c ; Timer 0 run flag TF0: equ 0x8d ; Timer 0 overflow flag TR1: equ 0x8e ; Timer 1 run flag TF1: equ 0x8f ; Timer 1 overflow flag TMOD: equ 0x89 ; Timer mode register TL0: equ 0x8a ; Timer 0 low byte TL1: equ 0x8b ; Timer 1 low byte TH0: equ 0x8c ; Timer 0 high byte TH1: equ 0x8d ; Timer 1 high byte P1: equ 0x90 ; Port 1 P1.0: equ 0x90 ; Port 1 bit 0 P1.1: equ 0x91 ; Port 1 bit 1 P1.2: equ 0x92 ; Port 1 bit 2 P1.3: equ 0x93 ; Port 1 bit 3 P1.4: equ 0x94 ; Port 1 bit 4 P1.5: equ 0x95 ; Port 1 bit 5 P1.6: equ 0x96 ; Port 1 bit 6 P1.7: equ 0x97 ; Port 1 bit 7 SCON: equ 0x98 ; Serial port control register RI: equ 0x98 ; Receive interrupt flag TI: equ 0x99 ; Transmit interrupt flag RB8: equ 0x9a ; Received 9th (parity) bit TB8: equ 0x9b ; Transmitted 9th (parity) bit REN: equ 0x9c ; Enable receive SM2: equ 0x9d ; Serial mode bit 2 SM1: equ 0x9e ; Serial mode bit 1 SM0: equ 0x9f ; Serial mode bit 0 SBUF: equ 0x99 ; Serial port buffer P2: equ 0xa0 ; Port 2 / A8-15 P2.0: equ 0xa0 ; Port 2 bit 0 P2.1: equ 0xa1 ; Port 2 bit 1 P2.2: equ 0xa2 ; Port 2 bit 2 P2.3: equ 0xa3 ; Port 2 bit 3 P2.4: equ 0xa4 ; Port 2 bit 4 P2.5: equ 0xa5 ; Port 2 bit 5 P2.6: equ 0xa6 ; Port 2 bit 6 P2.7: equ 0xa7 ; Port 2 bit 7 IE: equ 0xa8 ; Interrupt enable register EX0: equ 0xa8 ; External interrupt 0 enable ET0: equ 0xa9 ; Timer 0 interrupt enable EX1: equ 0xaa ; External interrupt 1 enable ET1: equ 0xab ; Timer 1 interrupt enable ES: equ 0xac ; Serial port interrupt enable ET2: equ 0xad ; Timer 2 interrupt enable (8052) EA: equ 0xaf ; Required to enable all interrupts P3: equ 0xb0 ; Port 3 P3.0: equ 0xb0 ; Port 3 bit 0 / RxD P3.1: equ 0xb1 ; Port 3 bit 1 / TxD P3.2: equ 0xb2 ; Port 3 bit 2 / /INT0 P3.3: equ 0xb3 ; Port 3 bit 3 / /INT1 P3.4: equ 0xb4 ; Port 3 bit 4 / T0 P3.5: equ 0xb5 ; Port 3 bit 5 / T1 P3.6: equ 0xb6 ; Port 3 bit 6 / /WR P3.7: equ 0xb7 ; Port 3 bit 7 / /RD IP: equ 0xb8 ; Interrupt priority register PX0: equ 0xb8 ; External interrupt 0 priority PT0: equ 0xb9 ; Timer 0 interrupt priority PX1: equ 0xba ; External interrupt 1 priority PT1: equ 0xbb ; Timer 1 interrupt priority PS: equ 0xbc ; Serial port interrupt priority PT2: equ 0xbd ; Timer 2 interrupt priority (8052) T2CON: equ 0xc8 ; Timer 2 control register (8052) CPRL2: equ 0xc8 ; Timer 2 capture/reload flag CT2: equ 0xc9 ; Timer 2 counter/timer select TR2: equ 0xca ; Timer 2 run flag EXEN2: equ 0xcb ; Timer 2 external enable flag TCLK: equ 0xcc ; Transmit clock select RCLK: equ 0xcd ; Receive clock select EXF2: equ 0xce ; Timer 2 external overflow flag TF2: equ 0xcf ; Timer 2 overflow flag RCAP2L: equ 0xca ; Timer 2 low capture register (8052) RCAP2H: equ 0xcb ; Timer 2 high capture register (8052) TL2: equ 0xcc ; Timer 2 low byte (8052) TH2: equ 0xcd ; Timer 2 high byte (8052) PSW: equ 0xd0 ; Process status word P: equ 0xd0 ; Parity flag OV: equ 0xd2 ; Overflow flag RS0: equ 0xd3 ; Register bank selector bit 0 RS1: equ 0xd4 ; Register bank selector bit 1 F0: equ 0xd5 ; General-purpose flag AC: equ 0xd6 ; Auxiliary carry flag CY: equ 0xd7 ; Carry flag ACC: equ 0xe0 ; Accumulator (the address of A) B: equ 0xf0 ; B register ;***************************************************************; ;** Library functions **; ;***************************************************************; ; Many of the functions defined in the monitor are available for ; your use. The functions should be called at the addresses ; listed below, which are locations in a fixed jump table. This ; method permits you to assemble a new version of the monitor ; without having to edit or reassemble your code! See the ; readme file for descriptions of the various functions. ; ; Example of how to call these functions: ; mov A, #"A" ; lcall outchar inchar: equ 0x0040 ; Input a character inhex: equ 0x0044 ; Input a hexadecimal value outchar: equ 0x0050 ; Output a character outnib: equ 0x0054 ; Output 4-bit hexadecimal value outbyte: equ 0x0058 ; Output an 8-bit hexadecimal value outword: equ 0x005c ; Output a 16-bit hexadecimal value outstr: equ 0x0070 ; Output a null-terminated string ;***************************************************************; ;** Return to your main file **; ;***************************************************************;