⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 at88sc102代码.txt

📁 AT88SC102卡的读写程序
💻 TXT
📖 第 1 页 / 共 2 页
字号:
//51 AT88SC102代码
//  
//		-------------
// VCC----|RST	1.0|----------LED-----------
//		|		2.0|----------RST-----------
//		|		2.1|----------CLK----------
//		|		2.2|----------FUSE--------
//		|		2.3|----------PGM---------
//		|		2.4|----------IO-------------
//		-------------
led     bit     p1.0 
rst	bit 	p2.0 
clk	bit	p2.1 
fuse    bit     p2.2 
pgm     bit     p2.3 
io	bit	p2.4 
wdog    bit     p1.7			//外部看门狗
icc     bit     p3.3			
s_code1 equ     20h             ;SC	// 安全码低位
s_code2 equ     21h             ;SC	//安全码高位
 
order    equ    2ah 
data1    equ    2bh 
data2    equ    2ch 
data3    equ    2dh 
data4    equ    2eh 
data5    equ    2fh 
data6    equ    30h 
data7    equ    31h 
data8    equ    32h 
data9    equ    33h 
data10   equ    34h 
data11   equ    35h 
data12   equ    36h 
data13   equ    37h 
data14   equ    38h 
data15   equ    39h 
data16   equ    3ah 
data17   equ    3bh 
data18   equ    3ch 
data19   equ    3dh 
data20   equ    3eh 
data21   equ    3fh 
data22   equ    40h 
data23   equ    41h 
data24   equ    42h 
data25   equ    43h 
data26   equ    44h 
data27   equ    45h 
data28   equ    46h 
data29   equ    47h 
data30   equ    48h 
data31   equ    49h 
data32   equ    4ah 
data33   equ    4bh 
data34   equ    4ch 
data35   equ    4dh 
data36   equ    4eh 
data37   equ    4fh 
data38   equ    50h 
data39   equ    51h 
data40h  equ    52h 
data41h  equ    53h 
data42h  equ    54h 
 
rddat1   equ    55h 
rddat2   equ    56h 
rddat3   equ    57h 
rddat4   equ    58h 
rddat5   equ    59h 
rddat6   equ    5ah 
rddat7   equ    5bh 
counter  equ    5ch 
 
temp0    equ    68h 
temp1    equ    69h 
 
e1_code1 equ    2ch             ;密匙 
e1_code2 equ    0c1h            ;---- 
e1_code3 equ    06h             ;---- 
e1_code4 equ    7dh             ;---- 
e1_code5 equ    94h             ;---- 
e1_code6 equ    35h             ;---- 
 
inisc1   equ    1bh             ;新卡密码 
inisc2   equ    6ch 
 
spcsc1   equ    89h             ;专用卡密码 
spcsc2   equ    89h 
;********************************* 
        org     0000h 
        ljmp    init 
	org     0023h 
	ljmp    comm 
 
	org     0030h 
init:   mov     sp,#70h 
        mov     psw,#0 
        mov     tmod,#00100000b 
        mov     scon,#01010000b 
        mov     tcon,#00000100b 
        mov     pcon,#00h 
        clr     led 
        clr     io 
        clr     clk 
        clr     rst 
        clr     pgm 
        clr     fuse 
        mov     th1,#0fdh 
        mov     tl1,#0fdh 
        clr     et1 
        clr     ex1 
        setb    tr1 
        setb    ea 
;       setb    ex1 
        setb    es 
loop:   setb    wdog 
        nop 
        nop 
        nop 
        nop 
        nop 
        nop 
        nop 
        nop 
        nop 
        nop 
        nop 
        nop 
        clr     wdog 
        jnb     icc,light 
        clr     led 
        ajmp    loop 
light:  setb    led 
        ajmp    loop 
 
;****** 通信中断 *********** 
comm:   mov     r0,#order 
recv:   mov     a,sbuf 
        clr     ri 
        cjne    a,#'.',gorev 
        ljmp    recieve 
gorev:  mov     @r0,a 
        inc     r0 
        cjne    a,#'F',recieve 
        ajmp    process 
recieve:jnb     ri,$ 
        ajmp    recv 
process:clr     io 
        clr     clk 
        clr     rst 
        clr     pgm 
        clr     fuse 
        mov     dptr,#ordtab 
cmpord: clr     a 
        movc    a,@a+dptr 
        jz      isfail 
        inc     dptr 
        cjne    a,order,nextord 
        clr     a 
        movc    a,@a+dptr 
        mov     b,a 
        inc     dptr 
        clr     a 
        movc    a,@a+dptr 
        mov     dpl,a 
        mov     dph,b 
        clr     a 
        jmp     @a+dptr 
nextord:inc     dptr 
        inc     dptr 
        sjmp    cmpord 
 
isfail: mov     a,#'6'                 ;IC卡操作失败 
        mov     sbuf,a 
        jnb     ti,$ 
        clr     ti 
        mov     a,#'F' 
        mov     sbuf,a 
        jnb     ti,$ 
        clr     ti 
        clr     fuse 
        reti 
 
sendids:setb    led 
        clr     clk 
        clr     io 
        clr     rst 
        clr     pgm 
        setb    fuse 
        lcall   dly_us 
        lcall	rst_ic 
	mov	r2,#02h 
	lcall	inc_ic 
	lcall	read_ic 
        lcall   bcd_asc 
        mov     data1,temp0 
        mov     data2,temp1 
        lcall	read_ic 
        lcall   bcd_asc 
        mov     data3,temp0 
        mov     data4,temp1 
        lcall	read_ic 
        lcall   bcd_asc 
        mov     data5,temp0 
        mov     data6,temp1 
        lcall	read_ic 
        lcall   bcd_asc 
        mov     data7,temp0 
        mov     data8,temp1 
        lcall   read_ic 
        mov     data9,a 
        cjne    a,#'A',nousec 
        mov     order,#'1' 
        mov     data10,#'F' 
        mov     r7,#11 
        mov     r0,#order 
sendid: mov     a,@r0 
        mov     sbuf,a 
        jnb     ti,$ 
        clr     ti 
        inc     r0 
        djnz    r7,sendid 
        jb      icc,$ 
        clr     ie1 
        reti 
nousec: cjne    a,#'C',nospec 
        lcall	rst_ic 
	mov	r2,#0ah 
	lcall	inc_ic 
        mov     s_code1,#spcsc1 
        mov     s_code2,#spcsc2 
	lcall   cmp_sc 
	lcall	rst_ic 
	mov	r2,#0ch 
	lcall	inc_ic 
	lcall	read_ic 
        cjne    a,#0ffh,isf 
        mov     a,#'3' 
        ljmp    ssde 
isf:    mov     a,#'2' 
ssde:   mov     sbuf,a 
        jnb     ti,$ 
        clr     ti 
        mov     a,#'F' 
        mov     sbuf,a 
        jnb     ti,$ 
        clr     ti 
        jb      icc,$ 
        clr     ie1 
        reti 
nospec: mov     s_code1,#0f0h 
        mov     s_code2,#0f0h 
        lcall	rst_ic 
	mov	r2,#0ah 
	lcall	inc_ic 
	lcall   cmp_sc 
	lcall	rst_ic 
	mov	r2,#0ch 
	lcall	inc_ic 
	lcall	read_ic 
        cjne    a,#0ffh,invic 
        lcall   rst_ic 
	mov	r2,#56h 
	lcall	inc_ic 
        mov     a,#e1_code1 
        lcall   wri_ic 
        mov     a,#e1_code2 
        lcall   wri_ic 
        mov     a,#e1_code3 
        lcall   wri_ic 
        mov     a,#e1_code4 
        lcall   wri_ic 
        mov     a,#e1_code5 
        lcall   wri_ic 
        mov     a,#e1_code6 
        lcall   wri_ic 
        clr     fuse 
        lcall   rst_ic                 ;擦除应用区1 
	mov	r2,#56h 
	lcall	inc_ic 
	lcall	era_cmp 
        lcall   rst_ic 
        mov     r2,#16h 
        lcall   inc_ic 
        mov     a,#0bfh 
        lcall   wri_ic 
        lcall   rst_ic 
        mov     r2,#16h 
        lcall   inc_ic 
        lcall   read_ic 
        cjne    a,#0bfh,jmpinic 
        ljmp    isnew 
jmpinic:ljmp    invic 
isnew:  mov     a,#'4' 
        ajmp    sendicc 
invic:  mov     a,#'2' 
sendicc:mov     sbuf,a 
        jnb     ti,$ 
        clr     ti 
        mov     a,#'F' 
        mov     sbuf,a 
        jnb     ti,$ 
        clr     ti 
        clr     ie1 
        jb      icc,$ 
        reti 
 
 
icid:   setb    fuse 
        mov     r7,#4 
        mov     r0,#data1 
        lcall   asc_bcd 
        lcall	rst_ic 
	mov	r2,#02h 
	lcall	inc_ic 
        mov     a,data1 
        lcall   wri_ic 
        mov     a,data3 
        lcall   wri_ic 
        mov     a,data5 
        lcall   wri_ic 
        mov     a,data7 
        lcall   wri_ic 
        mov     a,data9 
        lcall   wri_Ic 
        lcall	rst_ic 
	mov	r2,#02h 
	lcall	inc_ic 
        lcall   read_ic 
        cjne    a,data1,jmpchi 
        lcall   read_ic 
        cjne    a,data3,jmpchi 
        lcall   read_ic 
        cjne    a,data5,jmpchi 
        lcall   read_ic 
        cjne    a,data7,jmpchi 
        lcall   read_ic 
        cjne    a,data9,jmpchi 
        mov     a,data9 
        cjne    a,#'C',jmpuser 
        ljmp    inispc 
jmpuser:lcall   rst_ic                  ;改变IC卡初始密码 
        mov     r2,#0ah 
        lcall   inc_ic 
        lcall   era_ic 
        lcall   rst_ic 
        mov     r2,#0ah 
        lcall   inc_ic 
        mov     a,#inisc1 
        lcall   wri_ic 
        mov     a,#inisc2 
        lcall   wri_ic 
        lcall   rst_ic 
        mov     r2,#0ah 
        lcall   inc_ic 
        lcall   read_ic 
        cjne    a,#inisc1,jmpchi 
        lcall   read_ic 
        cjne    a,#inisc2,jmpchi 
        ljmp    issucc 
jmpchi: ljmp    isfail 
inispc: lcall   rst_ic 
        mov     r2,#0ah 
        lcall   inc_ic 
        lcall   era_ic 
        lcall   rst_ic 
        mov     r2,#0ah 
        lcall   inc_ic 
        mov     a,#spcsc1 
        lcall   wri_ic 
        mov     a,#spcsc2 
        lcall   wri_ic 
        lcall   rst_ic 
        mov     r2,#0ah 
        lcall   inc_ic 
        lcall   read_ic 
        cjne    a,#spcsc1,jmpaf 
        lcall   read_ic 
        cjne    a,#spcsc2,jmpaf 
        ljmp    wriersc 
jmpaf:  ljmp    isfail 
 
wriersc:lcall   rst_ic 
        mov     r2,#56h 
        lcall   inc_ic 
        lcall   era_ic 
        lcall   rst_ic 
        mov     r2,#58h 
        lcall   inc_ic 
        lcall   era_ic 
        lcall   rst_ic 
        mov     r2,#5ah 
        lcall   inc_ic 
        lcall   era_ic 
        lcall   rst_ic 
        mov     r2,#56h 
        lcall   inc_ic 
        mov     a,#e1_code1 
        lcall   wri_ic 
        mov     a,#e1_code2 
        lcall   wri_ic 
        mov     a,#e1_code3 
        lcall   wri_ic 
        mov     a,#e1_code4 
        lcall   wri_ic 
        mov     a,#e1_code5 
        lcall   wri_ic 
        mov     a,#e1_code6 
        lcall   wri_ic 
        lcall   rst_ic 
        mov     r2,#56h 
        lcall   inc_ic 
        lcall   read_ic 
        cjne    a,#e1_code1,jmpaf 
        lcall   read_ic 
        cjne    a,#e1_code2,jmpaf 
        lcall   read_ic 
        cjne    a,#e1_code3,jmpaf 
        lcall   read_ic 
        cjne    a,#e1_code4,jmpaf 
        lcall   read_ic 
        cjne    a,#e1_code5,jmpaf 
        lcall   read_ic 
        cjne    a,#e1_code6,jmpaf 
        lcall   blow_f2 
        lcall   issucc 
 
initic: lcall	rst_ic                    ;IC有关项清0?
	mov	r2,#3fh 
	lcall	inc_ic 
        mov     counter,#6 
initwri:mov     a,#00h 
        lcall   wri_ic 
        djnz    counter,initwri 
        lcall	rst_ic 
	mov	r2,#3fh 
	lcall	inc_ic 
        mov     counter,#6 
initrd: lcall   read_ic 
        cjne    a,#0,jmpfail 
        djnz    counter,initrd 
        lcall   rst_ic 
        mov	r2,#53h 
	lcall	inc_ic 
        mov     counter,#3 
initwr: mov     a,#00h 
        lcall   wri_ic 
        djnz    counter,initwr 
        lcall	rst_ic 
	mov	r2,#53h 
	lcall	inc_ic 
        mov     counter,#3 
initd:  lcall   read_ic 
        cjne    a,#0,jmpfail 
        djnz    counter,initd 
        ljmp    issucc 
jmpfail:ljmp    isfail 
 
dataic: lcall   rst_ic                  ;读出IC有关项 
        mov     r2,#3fh 
        lcall   inc_ic 
        mov     counter,#12 
        mov     r0,#data1 
datrd0: lcall   read_ic 
        lcall   bcd_asc 
        mov     a,temp0 
        mov     @r0,a 
        inc     r0 
        mov     a,temp1 
        mov     @r0,a 
        inc     r0 
        djnz    counter,datrd0 
        lcall   rst_ic 
        mov     r2,#53h 
        lcall   inc_ic 
        mov     counter,#3 
        mov     r0,#data25 
datrd1: lcall   read_ic 
        lcall   bcd_asc 
        mov     a,temp0 
        mov     @r0,a 
        inc     r0 
        mov     a,temp1 
        mov     @r0,a 
        inc     r0 
        djnz    counter,datrd1 
        lcall   rst_ic 
        mov     r2,#3dh 
        lcall   inc_ic 
        mov     r0,#data31 
        mov     counter,#2 
rdsc:   lcall   read_ic 
        lcall   csc_asc 
        djnz    counter,rdsc 
        mov     data35,#'F' 
        mov     order,#'8' 
        mov     r7,#36 
        mov     r0,#order 
datsend:mov     a,@r0 
        mov     sbuf,a 
        jnb     ti,$ 
        clr     ti 
        inc     r0 
        djnz    r7,datsend 
        reti 
 
priceic:lcall   rst_ic          ;写入购电款、时段价格 
        mov     r7,#20 
        mov     r0,#data1 
        lcall   asc_bcd 
        mov     r2,#17h 
        lcall   inc_ic 
        mov     counter,#20 
        mov     r0,#data1 
priwri: mov     a,@r0 
        lcall   wri_ic 
        inc     r0 
        inc     r0 
        djnz    counter,priwri 
        lcall   rst_ic 
        mov     r2,#17h 
        lcall   inc_ic 
        mov     counter,#20 
        mov     r0,#data1 
pricmp: lcall   read_ic 
        mov     b,a 
        mov     a,@r0 
        cjne    a,b,jmpprif 
        inc     r0 
        inc     r0 
        djnz    counter,pricmp 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -