機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開(kāi)發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開(kāi)發(fā)
培訓(xùn)信息
贊助商
EMC指令版本SLE4428卡讀寫程序
EMC指令版本SLE4428卡讀寫程序
 更新時(shí)間:2008-7-26 20:11:57  點(diǎn)擊數(shù):2
【字體: 字體顏色
SLE4428卡讀寫程序。這個(gè)EMC指令版本是根據(jù)C51程序改寫的。已經(jīng)通過(guò)了調(diào)試。
;============================
;發(fā)送數(shù)據(jù)子程序
;入口: DBUF_24 =要發(fā)送的數(shù)據(jù)(8_BIT)
;============================
ic_send_data:
MOV A,@8 ;循環(huán)次數(shù)=8
MOV COUNT_24,A
TXLP:
RRC DBUF_24 ;左移(帶C)
CALL ic_BITOUT ;輸出1_BIT
DJZ COUNT_24 ;循環(huán)結(jié)束?
JMP TXLP
RET
;=================
;位輸入子程序
;說(shuō)明: 當(dāng)SCL=1時(shí),從SDA上讀電平
;出口: C=從SDA上讀入的位值
;=================
ic_BITIN:
set_io_in ;設(shè)置i/o為輸入口
set_clk_out
bc 0x05,0
bs port6,icclk ;clk=1
call delay ;延時(shí)
BC R3,0
JBC port6,icio
BS R3,0 ;C=io
call delay ;延時(shí)0.6US
BC port6,icclk ;clk=0
call delay ;延時(shí)0.6US
RET
;=================
;位輸出子程序
;說(shuō)明: 每當(dāng)SCL=0時(shí),改寫SDA上的電平
;入口: C=要寫到SDA上的位值
;=================
ic_BITOUT:
;SDA_OUT ;設(shè)置SDA為輸出口
set_io_out
set_clk_out

JBS R3,0
JMP BIT0
BS port6,icio ;io=C=1
JMP io1
BIT0:
BC port6,icio ;io=C=0
io1:
call delay ;延時(shí)0.6US
bs port6,icclk ;clk=1
BIT2:
call delay
call delay
bc port6,icclk ;clk=0
RET
;============================
;接收數(shù)據(jù)子程序
;入口: TT_24.REND_24 =讀完畢標(biāo)志
;出口: DBUF_24 =接受到的數(shù)據(jù)(8_BIT)
;============================
ic_receive_data:
MOV A,@8 ;循環(huán)次數(shù)=8
MOV COUNT_24,A
CLR DBUF_24
RXLP:
CALL ic_BITIN ;輸入1_BIT
RRC DBUF_24 ;左移(帶C)
DJZ COUNT_24 ;循環(huán)結(jié)束?
JMP RXLP
RET


;===========================
;復(fù)位操作
;============================
ic_reset:
set_clk_out
set_io_out
set_rst_out

bc port6,icclk ;clk=0
call delay10
bc port6,icrst ;rst=0
call delay10
bs port6,icio ;i/o=1
call delay10
bs port6,icrst ;rst=1
call delay10
bs port6,icclk ;clk=1
call delay10
bc port6,icclk ;clk=0
call delay10
bc port6,icrst ;rst=0
call delay10

call ic_receive_data
MOV ic_buffer1,dbuf_24
call ic_receive_data
;MOV ic_buffer2,dbuf_24
call ic_receive_data
;MOV ic_buffer3,dbuf_24
call ic_receive_data
;MOV ic_buffer4,dbuf_24
ret

;============================延時(shí)子程序====================================
;功能:短延時(shí) 入口:NONE 出口:NONE
;影響資源:A,TEMP ,STATUS
;==========================================================================
DELAY:
MOV A,@0X05
MOV TEMP,A
DJZ TEMP
JMP $-1
RET
;============================延時(shí)子程序10MS================================
;功能:延時(shí) 入口:NONE 出口:NONE
;影響資源:A,TEMP ,STATUS
;==========================================================================
DELAY10:
MOV A,@0x10
MOV TEMP,A
MOV A,@0xff
MOV TEMP1,A
DJZ TEMP1
JMP $-1
DJZ TEMP
JMP $-5
RET

DELAY100:
MOV a, @0x36
MOV delay_time1, a
delay51:
MOV a, @0x25
MOV delay_time2,a
delay52:
MOV a, @0x42
MOV flag, a
delay53:
djz flag
jmp delay53
djz delay_time2
jmp delay52
djz delay_time1
jmp delay51
RET

;=========發(fā)送命令=========
;send command
;==========================
ic_sendcommand:
;start condition
set_clk_out
set_io_out
bc port6,icclk
bs port6,icio
call delay
bs port6,icclk
call delay
bc port6,icio
call delay
bc port6,icclk
call delay

MOV dbuf_24,ic_command1
call ic_send_data
MOV dbuf_24,ic_command2
call ic_send_data
MOV dbuf_24,ic_command3
call ic_send_data

;stop condition
bc port6,icio
call delay
bs port6,icclk
call delay
bs port6,icio
call delay
ret

;process
ic_process:
bc port6,icclk
call delay
bc port6,icio
MOV process_temp,@254
puls:
bs port6,icclk
call delay
bc port6,icclk
djz process_temp
jmp puls
ret

/*================讀主存儲(chǔ)器==================
入口:rmm_address 讀取的地址
rmm_len 讀取的長(zhǎng)度
出口:ic_buffer1
;============================================*/
ic_readmainmemory:
bank 0
MOV ic_command1,@0x30
MOV ic_command2,rmm_address
MOV ic_command3,@0
call ic_sendcommand

bc port6,icclk
call delay
MOV len,@0 ;0x10為私有要保護(hù)
MOV rmm_temp,@255
MOV a,rmm_address
sub rmm_temp,a
inc rmm_temp ;rmm_temp=256-address
goto_readdata:
CJL len,rmm_temp,readdata
;COMPARE AND JUMP IF REG1 jmp exit_readdata
readdata:
CJL len,rmm_len,save_data
call ic_receive_data
jmp drop_data
save_data:
call ic_receive_data
MOV a,dbuf_24
MOV ic_buffer1,a
drop_data:
inc len
jmp goto_readdata
exit_readdata:
bs port6,icclk
call delay
bc port6,icclk
call delay
ret

/*================寫主存儲(chǔ)器==================
入口:wmm_address 寫主存的地址
wmm_value 寫主存的數(shù)據(jù)
出口:
;============================================*/
ic_writemainmemory:
set_io_out
set_clk_out
MOV ic_command1,@0x38
MOV ic_command2,wmm_address
MOV ic_command3,wmm_data
call ic_sendcommand
bc port6,icclk
call delay
bc port6,icio
call delay
MOV len,@0 ;0x10為私有要保護(hù)
goto_writedata:
CJL len,@254,writedata
jmp exit_writedata
writedata:
bs port6,icclk
call delay
bc port6,icclk
call delay
inc len
jmp goto_writedata
exit_writedata:
bs port6,icio
call delay
bs port6,icclk ;stop condition
call delay
bc port6,icclk
call delay
ret
/*================讀安全儲(chǔ)區(qū)=================
入口:
出口:rsm_data1、rsm_data2、rsm_data3、rsm_data4讀取的數(shù)據(jù)
;============================================*/
ic_readsecmemory:
set_io_out
set_clk_out
MOV ic_command1,@0x31
;MOV a,@0xff
MOV ic_command2,@0xff
MOV ic_command3,@0xff
call ic_sendcommand
bc port6,icclk
call delay

call ic_receive_data
MOV rsm_data1,dbuf_24
call ic_receive_data
MOV rsm_data2,dbuf_24
call ic_receive_data
MOV rsm_data3,dbuf_24
call ic_receive_data
MOV rsm_data4,dbuf_24
set_io_out
set_clk_out
bs port6,icio
call delay
bs port6,icclk ;stop condition
call delay
bc port6,icclk
call delay
ret
/*================比較密碼 =================
入口:
出口:
;============================================*/
ic_compareverifdata:
set_io_out
set_clk_out
call ic_readsecmemory
nop
nop
;MOV a,rsm_data1
;and a,@0x07
;MOV rsm_data1,a
MOV rsm_data1,rsm_data1
jbc 0x03,2
jmp fail_exit

nop
CJE rsm_data1,@0x07,setbit1
CJE rsm_data1,@0x06,setbit2
CJE rsm_data1,@0x04,setbit3
jmp fail_exit
setbit1:
MOV wsm_data,@0x06
nop
jmp endcomp
setbit2:
MOV wsm_data,@0x04
nop
jmp endcomp
setbit3:
MOV wsm_data,@0x00
nop
endcomp:
MOV wsm_address,@0
call ic_writesecmemory

;MOV len,@0
;CJL len,@3,writedata
;MOV password_data,@0xff
MOV ic_command1,@0x33
MOV ic_command2,@1
MOV ic_command3,@0xff
call ic_sendcommand
set_io_out
set_clk_out
bc port6,icclk
call delay
bc port6,icio
call delay
bs port6,icclk ;stop condition
call delay
bc port6,icclk
call delay
bs port6,icclk ;stop condition
call delay
bc port6,icclk
call delay
bs port6,icio
call delay
bs port6,icclk ;stop condition
call delay
bc port6,icclk
call delay

MOV ic_command1,@0x33
MOV ic_command2,@2
MOV ic_command3,@0xff
call ic_sendcommand

bc port6,icclk
call delay
bc port6,icio
call delay
bs port6,icclk ;stop condition
call delay
bc port6,icclk
call delay
bs port6,icclk ;stop condition
call delay
bc port6,icclk
call delay
bs port6,icio
call delay
bs port6,icclk ;stop condition
call delay
bc port6,icclk
call delay

MOV ic_command1,@0x33
MOV ic_command2,@3
MOV ic_command3,@0xff
call ic_sendcommand

bc port6,icclk
call delay
bc port6,icio
call delay
bs port6,icclk ;stop condition
call delay
bc port6,icclk
call delay
bs port6,icclk ;stop condition
call delay
bc port6,icclk
call delay
bs port6,icio
call delay
bs port6,icclk ;stop condition
call delay
bc port6,icclk
call delay
nop
fail_exit:
MOV wsm_address,@0
MOV wsm_data,@0xff
call ic_writesecmemory
call delay
call ic_readsecmemory
CJE rsm_data1,@0x07,success
MOV ic_compare_password_flag,@0
jmp failed
success:
MOV ic_compare_password_flag,@1
failed:
nop
nop
ret
/*================讀保護(hù)儲(chǔ)器=================
出口:rpm_data 讀取的數(shù)據(jù)
;============================================*/
ic_readprotectmemory:
set_io_out
set_clk_out
MOV ic_command1,@0x34
MOV a,@0
MOV ic_command2,a
MOV ic_command3,a
call ic_sendcommand

bc p6cr,icclk
call delay
call ic_receive_data
MOV rpm_data1,dbuf_24
call ic_receive_data
MOV rpm_data2,dbuf_24
call ic_receive_data
MOV rpm_data3,dbuf_24
call ic_receive_data
MOV rpm_data4,dbuf_24
set_io_out
set_clk_out
bs p6cr,icclk ;stop condition
call delay
bc p6cr,icclk
call delay
ret

/*================寫保護(hù)儲(chǔ)器=================
入口:wpm_address 寫的地址
出口:wpm_data 寫的數(shù)據(jù)
;============================================*/
ic_writeprotectmemory:
set_io_out
set_clk_out
MOV ic_command1,@0x3c
MOV ic_command2,wpm_address
MOV ic_command3,wpm_data
call ic_sendcommand
bc p6cr,icclk
call delay
bc p6cr,icio
call delay

MOV len,@0
goto_writeprotectdata:
CJL len,@254,writeprotectdata
jmp exit_writeprotectdata
writeprotectdata:
bs p6cr,icclk
call delay
bc p6cr,icclk
call delay
inc len
jmp goto_writeprotectdata
exit_writeprotectdata:

bs p6cr,icio
call delay
bs p6cr,icclk ;stop condition
call delay
bc p6cr,icclk
call delay
ret


/*================寫安全儲(chǔ)區(qū)=================
入口:wsm_address 寫的地址
出口:wsm_data 寫的數(shù)據(jù)
;============================================*/
ic_writesecmemory:
set_io_out
set_clk_out
MOV ic_command1,@0x39
MOV ic_command2,wsm_address
MOV ic_command3,wsm_data
call ic_sendcommand
bc port6,icclk
call delay
bc port6,icio
call delay

MOV len,@0
goto_writesecdata:
CJL len,@254,writesecdata
jmp exit_writesecdata
writesecdata:
bs port6,icclk
call delay
bc port6,icclk
call delay
inc len
jmp goto_writesecdata
exit_writesecdata:

bs port6,icio
call delay
bs port6,icclk ;stop condition
call delay
bc port6,icclk
call delay
ret
  • 上一篇: 24CXX系列讀寫程序(EMC指令版)
  • 下一篇: EM78系列單片機(jī)的編程技巧
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1