📄 rom.asm
字号:
;12c4052,写eeprom,测试程序
isp_data equ 0e2h
isp_data1 equ 0e2h
isp_addrh equ 0e3h
isp_addrl equ 0e4h
isp_cmd equ 0e5h
isp_trig equ 0e6h
isp_contr equ 0e7h
;
isp_iap_byte_read equ 1h
isp_iap_byte_program equ 2h
isp_iap_sector_erase equ 3h
;
;enable_isp equ 80h ;fosc<30MHz
;enable_isp equ 81h ;fosc<24MHz
;enable_isp equ 82h ;fosc<20MHz
enable_isp equ 83h ;fosc<12MHz
;enable_isp equ 84h ;fosc<6MHz
;enable_isp equ 85h ;fosc<3MHz
;enable_isp equ 86h ;fosc<2MHz
;enable_isp equ 87h ;fosc<1MHz
debug_data equ 0A0h ;
;
flash_addres equ 1000h ;STC12C2052AD
;flash_addres equ 2800h ;STC12C5410AD
;--------------------------------------
ORG 0000H
ajmp main
org 0100h
main: mov p1,#0fh
acall delay
mov p1,#0f0h
acall delay
mov p1,#0fh
acall delay
mov p1,#0f0h
acall delay
mov p1,#0fh
acall delay
mov p1,#0f0h
mov sp,#7fh
main1: mov dptr,#flash_addres
acall byte_read
mov 40h,a
cjne a,#debug_data,data_not_equ_debug_data
;
mov p1,#01111111b
acall delay
cpl p1.7
acall delay
cpl p1.7
mov a,40h
cpl a
mov p1,a
wait1: cpl p3.7
acall delay
sjmp wait1
data_not_equ_debug_data:
cpl p1.3
acall delay
cpl p1.3
acall delay
cpl p1.3
acall delay
cpl p1.3
clr p1.3
acall delay
mov a,40h
cpl a
mov p1,a
acall delay
acall delay
mov dptr,#flash_addres
acall sector_erase
mov dptr,#flash_addres
mov a,#debug_data
acall byte_program
wait2: setb p1.3
cpl p1.5
acall delay
sjmp wait2
byte_read: mov isp_contr,#enable_isp
mov isp_cmd,#isp_iap_byte_read
mov isp_addrh,dph
mov isp_addrl,dpl
;clr ea
mov isp_trig,#46h
mov isp_trig,#0b9h
nop
mov a,isp_data
;setb ea
acall iap_disable
ret
;***********
byte_program: mov isp_contr,#enable_isp
mov isp_cmd,#isp_iap_byte_program
mov isp_addrh,dph
mov isp_addrl,dpl
mov isp_data,a
;clr ea
mov isp_trig,#46h
mov isp_trig,#0b9h
nop
;setb ea
acall iap_disable
ret
sector_erase: mov isp_contr,#enable_isp
mov isp_cmd,#03h
mov isp_addrh,dph
mov isp_addrl,dpl
;clr ea
mov isp_trig,#46h
mov isp_trig,#0b9h
nop
;setb ea
acall iap_disable
ret
iap_disable: mov isp_contr,#0
mov isp_cmd,#0
mov isp_trig,#0
ret
delay: clr a
mov r0,a
mov r1,a
mov r2,#20h
delay_loop: djnz r0,delay_loop
djnz r1,delay_loop
djnz r2,delay_loop
ret
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -