| ??? 10/13/06 09:18 Read: times |
#126372 - program ... Responding to: ???'s previous message |
org 2010h
FIRMWARE_BIT equ 010h ;flag for checking whether the program is
; exceuting for the forst time or not
; 0 for first time executing
mov r4, #080h ; LSB of 3200h
mov r5, #0c0h ; MSB of 3200h
acall FLASH_SUBROUTINE
org 3200h
sjmp START
FLASH_SUBROUTINE:
push ie
clr ea
mov a, cmod ; for checking of watch dog
mov r2, a
jnb acc.6, CLEARED_WATCHDOG
anl cmod, #0bfh
CLEARED_WATCHDOG:
anl fcf, #0fch ; enable boot sector
jb FIRMWARE_BIT, READ_FWARE ; if initially program has runned then user
; has changed the firmware passoword.
mov r1, #02h ; for writing flash
sjmp AHEAD
READ_FWARE:
mov r1, #03h ; reading flash byte
AHEAD:
mov dpl, #r4
mov dph, #r5
;Question now is ... with the use of above statement
; is my subroutine ie. START will be called and the control
; is transfered to START or what is else is happening here
mov a, r7
; here is my question is ... if I have to write more numbers
; take for eg ... 1, 2, 3, 4 then how can I be writing using
; one single register. if I can use more registers then in a single
; accumulator register how can i acomodate it.
; will I have to call the IAP for four times, unlike I have
' called once below
call 01ff0h
mov cmod, r2
orl fcf, #001h
pop ie
ret
;************************************************
START:
jb FIRMWARE_BIT, AHEAD
routines for lcd and matrix keyboard
Also the the flag FIRMWARE_BIt I am using will be having address below 2000 or above 2000h ... Definately there are many mistakes in this program, so please make a point on each. regards AS |



