summaryrefslogtreecommitdiff
path: root/demo/keypad_display.asm
diff options
context:
space:
mode:
Diffstat (limited to 'demo/keypad_display.asm')
-rw-r--r--demo/keypad_display.asm624
1 files changed, 624 insertions, 0 deletions
diff --git a/demo/keypad_display.asm b/demo/keypad_display.asm
new file mode 100644
index 0000000..a216cbe
--- /dev/null
+++ b/demo/keypad_display.asm
@@ -0,0 +1,624 @@
+;--------------------------------------------------------
+; File Created by SDCC : free open source ANSI-C Compiler
+; Version 2.9.0 #5416 (Oct 6 2009) (UNIX)
+; This file was generated Tue Oct 27 23:03:55 2009
+;--------------------------------------------------------
+ .module keypad_display
+ .optsdcc -mmcs51 --model-small
+
+;--------------------------------------------------------
+; Public variables in this module
+;--------------------------------------------------------
+ .globl _main
+ .globl _CY
+ .globl _AC
+ .globl _F0
+ .globl _RS1
+ .globl _RS0
+ .globl _OV
+ .globl _F1
+ .globl _P
+ .globl _PS
+ .globl _PT1
+ .globl _PX1
+ .globl _PT0
+ .globl _PX0
+ .globl _RD
+ .globl _WR
+ .globl _T1
+ .globl _T0
+ .globl _INT1
+ .globl _INT0
+ .globl _TXD
+ .globl _RXD
+ .globl _P3_7
+ .globl _P3_6
+ .globl _P3_5
+ .globl _P3_4
+ .globl _P3_3
+ .globl _P3_2
+ .globl _P3_1
+ .globl _P3_0
+ .globl _EA
+ .globl _ES
+ .globl _ET1
+ .globl _EX1
+ .globl _ET0
+ .globl _EX0
+ .globl _P2_7
+ .globl _P2_6
+ .globl _P2_5
+ .globl _P2_4
+ .globl _P2_3
+ .globl _P2_2
+ .globl _P2_1
+ .globl _P2_0
+ .globl _SM0
+ .globl _SM1
+ .globl _SM2
+ .globl _REN
+ .globl _TB8
+ .globl _RB8
+ .globl _TI
+ .globl _RI
+ .globl _P1_7
+ .globl _P1_6
+ .globl _P1_5
+ .globl _P1_4
+ .globl _P1_3
+ .globl _P1_2
+ .globl _P1_1
+ .globl _P1_0
+ .globl _TF1
+ .globl _TR1
+ .globl _TF0
+ .globl _TR0
+ .globl _IE1
+ .globl _IT1
+ .globl _IE0
+ .globl _IT0
+ .globl _P0_7
+ .globl _P0_6
+ .globl _P0_5
+ .globl _P0_4
+ .globl _P0_3
+ .globl _P0_2
+ .globl _P0_1
+ .globl _P0_0
+ .globl _B
+ .globl _ACC
+ .globl _PSW
+ .globl _IP
+ .globl _P3
+ .globl _IE
+ .globl _P2
+ .globl _SBUF
+ .globl _SCON
+ .globl _P1
+ .globl _TH1
+ .globl _TH0
+ .globl _TL1
+ .globl _TL0
+ .globl _TMOD
+ .globl _TCON
+ .globl _PCON
+ .globl _DPH
+ .globl _DPL
+ .globl _SP
+ .globl _P0
+ .globl _row
+ .globl _state
+;--------------------------------------------------------
+; special function registers
+;--------------------------------------------------------
+ .area RSEG (DATA)
+G$P0$0$0 == 0x0080
+_P0 = 0x0080
+G$SP$0$0 == 0x0081
+_SP = 0x0081
+G$DPL$0$0 == 0x0082
+_DPL = 0x0082
+G$DPH$0$0 == 0x0083
+_DPH = 0x0083
+G$PCON$0$0 == 0x0087
+_PCON = 0x0087
+G$TCON$0$0 == 0x0088
+_TCON = 0x0088
+G$TMOD$0$0 == 0x0089
+_TMOD = 0x0089
+G$TL0$0$0 == 0x008a
+_TL0 = 0x008a
+G$TL1$0$0 == 0x008b
+_TL1 = 0x008b
+G$TH0$0$0 == 0x008c
+_TH0 = 0x008c
+G$TH1$0$0 == 0x008d
+_TH1 = 0x008d
+G$P1$0$0 == 0x0090
+_P1 = 0x0090
+G$SCON$0$0 == 0x0098
+_SCON = 0x0098
+G$SBUF$0$0 == 0x0099
+_SBUF = 0x0099
+G$P2$0$0 == 0x00a0
+_P2 = 0x00a0
+G$IE$0$0 == 0x00a8
+_IE = 0x00a8
+G$P3$0$0 == 0x00b0
+_P3 = 0x00b0
+G$IP$0$0 == 0x00b8
+_IP = 0x00b8
+G$PSW$0$0 == 0x00d0
+_PSW = 0x00d0
+G$ACC$0$0 == 0x00e0
+_ACC = 0x00e0
+G$B$0$0 == 0x00f0
+_B = 0x00f0
+;--------------------------------------------------------
+; special function bits
+;--------------------------------------------------------
+ .area RSEG (DATA)
+G$P0_0$0$0 == 0x0080
+_P0_0 = 0x0080
+G$P0_1$0$0 == 0x0081
+_P0_1 = 0x0081
+G$P0_2$0$0 == 0x0082
+_P0_2 = 0x0082
+G$P0_3$0$0 == 0x0083
+_P0_3 = 0x0083
+G$P0_4$0$0 == 0x0084
+_P0_4 = 0x0084
+G$P0_5$0$0 == 0x0085
+_P0_5 = 0x0085
+G$P0_6$0$0 == 0x0086
+_P0_6 = 0x0086
+G$P0_7$0$0 == 0x0087
+_P0_7 = 0x0087
+G$IT0$0$0 == 0x0088
+_IT0 = 0x0088
+G$IE0$0$0 == 0x0089
+_IE0 = 0x0089
+G$IT1$0$0 == 0x008a
+_IT1 = 0x008a
+G$IE1$0$0 == 0x008b
+_IE1 = 0x008b
+G$TR0$0$0 == 0x008c
+_TR0 = 0x008c
+G$TF0$0$0 == 0x008d
+_TF0 = 0x008d
+G$TR1$0$0 == 0x008e
+_TR1 = 0x008e
+G$TF1$0$0 == 0x008f
+_TF1 = 0x008f
+G$P1_0$0$0 == 0x0090
+_P1_0 = 0x0090
+G$P1_1$0$0 == 0x0091
+_P1_1 = 0x0091
+G$P1_2$0$0 == 0x0092
+_P1_2 = 0x0092
+G$P1_3$0$0 == 0x0093
+_P1_3 = 0x0093
+G$P1_4$0$0 == 0x0094
+_P1_4 = 0x0094
+G$P1_5$0$0 == 0x0095
+_P1_5 = 0x0095
+G$P1_6$0$0 == 0x0096
+_P1_6 = 0x0096
+G$P1_7$0$0 == 0x0097
+_P1_7 = 0x0097
+G$RI$0$0 == 0x0098
+_RI = 0x0098
+G$TI$0$0 == 0x0099
+_TI = 0x0099
+G$RB8$0$0 == 0x009a
+_RB8 = 0x009a
+G$TB8$0$0 == 0x009b
+_TB8 = 0x009b
+G$REN$0$0 == 0x009c
+_REN = 0x009c
+G$SM2$0$0 == 0x009d
+_SM2 = 0x009d
+G$SM1$0$0 == 0x009e
+_SM1 = 0x009e
+G$SM0$0$0 == 0x009f
+_SM0 = 0x009f
+G$P2_0$0$0 == 0x00a0
+_P2_0 = 0x00a0
+G$P2_1$0$0 == 0x00a1
+_P2_1 = 0x00a1
+G$P2_2$0$0 == 0x00a2
+_P2_2 = 0x00a2
+G$P2_3$0$0 == 0x00a3
+_P2_3 = 0x00a3
+G$P2_4$0$0 == 0x00a4
+_P2_4 = 0x00a4
+G$P2_5$0$0 == 0x00a5
+_P2_5 = 0x00a5
+G$P2_6$0$0 == 0x00a6
+_P2_6 = 0x00a6
+G$P2_7$0$0 == 0x00a7
+_P2_7 = 0x00a7
+G$EX0$0$0 == 0x00a8
+_EX0 = 0x00a8
+G$ET0$0$0 == 0x00a9
+_ET0 = 0x00a9
+G$EX1$0$0 == 0x00aa
+_EX1 = 0x00aa
+G$ET1$0$0 == 0x00ab
+_ET1 = 0x00ab
+G$ES$0$0 == 0x00ac
+_ES = 0x00ac
+G$EA$0$0 == 0x00af
+_EA = 0x00af
+G$P3_0$0$0 == 0x00b0
+_P3_0 = 0x00b0
+G$P3_1$0$0 == 0x00b1
+_P3_1 = 0x00b1
+G$P3_2$0$0 == 0x00b2
+_P3_2 = 0x00b2
+G$P3_3$0$0 == 0x00b3
+_P3_3 = 0x00b3
+G$P3_4$0$0 == 0x00b4
+_P3_4 = 0x00b4
+G$P3_5$0$0 == 0x00b5
+_P3_5 = 0x00b5
+G$P3_6$0$0 == 0x00b6
+_P3_6 = 0x00b6
+G$P3_7$0$0 == 0x00b7
+_P3_7 = 0x00b7
+G$RXD$0$0 == 0x00b0
+_RXD = 0x00b0
+G$TXD$0$0 == 0x00b1
+_TXD = 0x00b1
+G$INT0$0$0 == 0x00b2
+_INT0 = 0x00b2
+G$INT1$0$0 == 0x00b3
+_INT1 = 0x00b3
+G$T0$0$0 == 0x00b4
+_T0 = 0x00b4
+G$T1$0$0 == 0x00b5
+_T1 = 0x00b5
+G$WR$0$0 == 0x00b6
+_WR = 0x00b6
+G$RD$0$0 == 0x00b7
+_RD = 0x00b7
+G$PX0$0$0 == 0x00b8
+_PX0 = 0x00b8
+G$PT0$0$0 == 0x00b9
+_PT0 = 0x00b9
+G$PX1$0$0 == 0x00ba
+_PX1 = 0x00ba
+G$PT1$0$0 == 0x00bb
+_PT1 = 0x00bb
+G$PS$0$0 == 0x00bc
+_PS = 0x00bc
+G$P$0$0 == 0x00d0
+_P = 0x00d0
+G$F1$0$0 == 0x00d1
+_F1 = 0x00d1
+G$OV$0$0 == 0x00d2
+_OV = 0x00d2
+G$RS0$0$0 == 0x00d3
+_RS0 = 0x00d3
+G$RS1$0$0 == 0x00d4
+_RS1 = 0x00d4
+G$F0$0$0 == 0x00d5
+_F0 = 0x00d5
+G$AC$0$0 == 0x00d6
+_AC = 0x00d6
+G$CY$0$0 == 0x00d7
+_CY = 0x00d7
+;--------------------------------------------------------
+; overlayable register banks
+;--------------------------------------------------------
+ .area REG_BANK_0 (REL,OVR,DATA)
+ .ds 8
+;--------------------------------------------------------
+; internal ram data
+;--------------------------------------------------------
+ .area DSEG (DATA)
+G$state$0$0==.
+_state::
+ .ds 1
+G$row$0$0==.
+_row::
+ .ds 2
+;--------------------------------------------------------
+; overlayable items in internal ram
+;--------------------------------------------------------
+ .area OSEG (OVR,DATA)
+;--------------------------------------------------------
+; Stack segment in internal ram
+;--------------------------------------------------------
+ .area SSEG (DATA)
+__start__stack:
+ .ds 1
+
+;--------------------------------------------------------
+; indirectly addressable internal ram data
+;--------------------------------------------------------
+ .area ISEG (DATA)
+;--------------------------------------------------------
+; absolute internal ram data
+;--------------------------------------------------------
+ .area IABS (ABS,DATA)
+ .area IABS (ABS,DATA)
+;--------------------------------------------------------
+; bit data
+;--------------------------------------------------------
+ .area BSEG (BIT)
+;--------------------------------------------------------
+; paged external ram data
+;--------------------------------------------------------
+ .area PSEG (PAG,XDATA)
+;--------------------------------------------------------
+; external ram data
+;--------------------------------------------------------
+ .area XSEG (XDATA)
+;--------------------------------------------------------
+; absolute external ram data
+;--------------------------------------------------------
+ .area XABS (ABS,XDATA)
+;--------------------------------------------------------
+; external initialized ram data
+;--------------------------------------------------------
+ .area XISEG (XDATA)
+ .area HOME (CODE)
+ .area GSINIT0 (CODE)
+ .area GSINIT1 (CODE)
+ .area GSINIT2 (CODE)
+ .area GSINIT3 (CODE)
+ .area GSINIT4 (CODE)
+ .area GSINIT5 (CODE)
+ .area GSINIT (CODE)
+ .area GSFINAL (CODE)
+ .area CSEG (CODE)
+;--------------------------------------------------------
+; interrupt vector
+;--------------------------------------------------------
+ .area HOME (CODE)
+__interrupt_vect:
+ ljmp __sdcc_gsinit_startup
+;--------------------------------------------------------
+; global & static initialisations
+;--------------------------------------------------------
+ .area HOME (CODE)
+ .area GSINIT (CODE)
+ .area GSFINAL (CODE)
+ .area GSINIT (CODE)
+ .globl __sdcc_gsinit_startup
+ .globl __sdcc_program_startup
+ .globl __start__stack
+ .globl __mcs51_genXINIT
+ .globl __mcs51_genXRAMCLEAR
+ .globl __mcs51_genRAMCLEAR
+ .area GSFINAL (CODE)
+ ljmp __sdcc_program_startup
+;--------------------------------------------------------
+; Home
+;--------------------------------------------------------
+ .area HOME (CODE)
+ .area HOME (CODE)
+__sdcc_program_startup:
+ lcall _main
+; return from main will lock up
+ sjmp .
+;--------------------------------------------------------
+; code
+;--------------------------------------------------------
+ .area CSEG (CODE)
+;------------------------------------------------------------
+;Allocation info for local variables in function 'main'
+;------------------------------------------------------------
+;------------------------------------------------------------
+ G$main$0$0 ==.
+ C$keypad_display.c$38$0$0 ==.
+; keypad_display.c:38: int main()
+; -----------------------------------------
+; function main
+; -----------------------------------------
+_main:
+ ar2 = 0x02
+ ar3 = 0x03
+ ar4 = 0x04
+ ar5 = 0x05
+ ar6 = 0x06
+ ar7 = 0x07
+ ar0 = 0x00
+ ar1 = 0x01
+ C$keypad_display.c$40$1$1 ==.
+; keypad_display.c:40: while(1) {
+00123$:
+ C$keypad_display.c$41$2$2 ==.
+; keypad_display.c:41: for(row=0; row<4; row++) {
+ clr a
+ mov _row,a
+ mov (_row + 1),a
+00118$:
+ clr c
+ mov a,_row
+ subb a,#0x04
+ mov a,(_row + 1)
+ xrl a,#0x80
+ subb a,#0x80
+ jnc 00123$
+ C$keypad_display.c$42$3$3 ==.
+; keypad_display.c:42: P1=keypad[row];
+ mov a,_row
+ add a,#_keypad
+ mov dpl,a
+ mov a,(_row + 1)
+ addc a,#(_keypad >> 8)
+ mov dph,a
+ clr a
+ movc a,@a+dptr
+ mov _P1,a
+ C$keypad_display.c$48$3$3 ==.
+; keypad_display.c:48: _endasm;
+
+ mov _state, P1
+
+ C$keypad_display.c$53$3$3 ==.
+; keypad_display.c:53: state&=0x0f;
+ anl _state,#0x0F
+ C$keypad_display.c$54$3$3 ==.
+; keypad_display.c:54: state^=0x0f;
+ xrl _state,#0x0F
+ C$keypad_display.c$56$3$3 ==.
+; keypad_display.c:56: if(state & 1) {
+ mov a,_state
+ jnb acc.0,00111$
+ C$keypad_display.c$57$4$4 ==.
+; keypad_display.c:57: state=0;
+ mov _state,#0x00
+ sjmp 00112$
+00111$:
+ C$keypad_display.c$58$3$3 ==.
+; keypad_display.c:58: } else if(state & 2) {
+ mov a,_state
+ jnb acc.1,00108$
+ C$keypad_display.c$59$4$5 ==.
+; keypad_display.c:59: state=1;
+ mov _state,#0x01
+ sjmp 00112$
+00108$:
+ C$keypad_display.c$60$3$3 ==.
+; keypad_display.c:60: } else if(state & 4) {
+ mov a,_state
+ jnb acc.2,00105$
+ C$keypad_display.c$61$4$6 ==.
+; keypad_display.c:61: state=2;
+ mov _state,#0x02
+ sjmp 00112$
+00105$:
+ C$keypad_display.c$62$3$3 ==.
+; keypad_display.c:62: } else if(state & 8) {
+ mov a,_state
+ jb acc.3,00142$
+ ljmp 00120$
+00142$:
+ C$keypad_display.c$63$4$7 ==.
+; keypad_display.c:63: state=3;
+ mov _state,#0x03
+ C$keypad_display.c$65$3$3 ==.
+; keypad_display.c:65: continue;
+00112$:
+ C$keypad_display.c$68$3$3 ==.
+; keypad_display.c:68: switch(row) {
+ clr a
+ cjne a,_row,00143$
+ clr a
+ cjne a,(_row + 1),00143$
+ sjmp 00113$
+00143$:
+ mov a,#0x01
+ cjne a,_row,00144$
+ clr a
+ cjne a,(_row + 1),00144$
+ sjmp 00114$
+00144$:
+ mov a,#0x02
+ cjne a,_row,00145$
+ clr a
+ cjne a,(_row + 1),00145$
+ sjmp 00115$
+00145$:
+ mov a,#0x03
+ cjne a,_row,00146$
+ clr a
+ cjne a,(_row + 1),00146$
+ sjmp 00116$
+00146$:
+ C$keypad_display.c$69$4$9 ==.
+; keypad_display.c:69: case 0:
+ sjmp 00120$
+00113$:
+ C$keypad_display.c$70$4$9 ==.
+; keypad_display.c:70: P3=display_0[state];
+ mov a,_state
+ mov dptr,#_display_0
+ movc a,@a+dptr
+ mov _P3,a
+ C$keypad_display.c$71$4$9 ==.
+; keypad_display.c:71: break;
+ C$keypad_display.c$72$4$9 ==.
+; keypad_display.c:72: case 1:
+ sjmp 00120$
+00114$:
+ C$keypad_display.c$73$4$9 ==.
+; keypad_display.c:73: P3=display_1[state];
+ mov a,_state
+ mov dptr,#_display_1
+ movc a,@a+dptr
+ mov _P3,a
+ C$keypad_display.c$74$4$9 ==.
+; keypad_display.c:74: break;
+ C$keypad_display.c$75$4$9 ==.
+; keypad_display.c:75: case 2:
+ sjmp 00120$
+00115$:
+ C$keypad_display.c$76$4$9 ==.
+; keypad_display.c:76: P3=display_2[state];
+ mov a,_state
+ mov dptr,#_display_2
+ movc a,@a+dptr
+ mov _P3,a
+ C$keypad_display.c$77$4$9 ==.
+; keypad_display.c:77: break;
+ C$keypad_display.c$78$4$9 ==.
+; keypad_display.c:78: case 3:
+ sjmp 00120$
+00116$:
+ C$keypad_display.c$79$4$9 ==.
+; keypad_display.c:79: P3=display_3[state];
+ mov a,_state
+ mov dptr,#_display_3
+ movc a,@a+dptr
+ mov _P3,a
+ C$keypad_display.c$81$2$2 ==.
+; keypad_display.c:81: }
+00120$:
+ C$keypad_display.c$41$2$2 ==.
+; keypad_display.c:41: for(row=0; row<4; row++) {
+ inc _row
+ clr a
+ cjne a,_row,00147$
+ inc (_row + 1)
+00147$:
+ C$keypad_display.c$84$1$1 ==.
+ XG$main$0$0 ==.
+ ljmp 00118$
+ .area CSEG (CODE)
+ .area CONST (CODE)
+Fkeypad_display$keypad$0$0 == .
+_keypad:
+ .db #0xEF
+ .db #0xDF
+ .db #0xBF
+ .db #0x7F
+Fkeypad_display$display_0$0$0 == .
+_display_0:
+ .db #0xF9
+ .db #0x64
+ .db #0x70
+ .db #0x48
+Fkeypad_display$display_1$0$0 == .
+_display_1:
+ .db #0x59
+ .db #0x52
+ .db #0x42
+ .db #0x40
+Fkeypad_display$display_2$0$0 == .
+_display_2:
+ .db #0xF8
+ .db #0x40
+ .db #0x50
+ .db #0xC6
+Fkeypad_display$display_3$0$0 == .
+_display_3:
+ .db #0x79
+ .db #0xC0
+ .db #0x49
+ .db #0xC0
+ .area XINIT (CODE)
+ .area CABS (ABS,CODE)