阅读:829回复:0
百思不得其解---PDIUSBD12 RESET 问题(需要对D12 Reset 16次)
测试D12Softconnect时,编写了下列测试程序。程序中出现了问题:
需要对D12 Reset 16次,否则Softconnect就不成功。Why? LED0 bit P1.2 LED1 bit P1.3 CNT data 20h D12_COMMAND data 03h D12_DATA data 02h D12_CS bit P1.6 D12_RESET bit P1.7 D12_SUSPD bit P3.3 org 0000h ajmp main org 0003h ljmp Fn_Isr org 000bh ljmp T0_Isr org 50h main: mov P1,#11110111b mov r4,#10h M_Delay: lcall Delay;开机延时 djnz r4,M_Delay CLR D12_CS CLR D12_SUSPD ;lcall D12_Connect SETB D12_SUSPD mov r4,#10h ;复位16次Softconnect就成功且Good_link亮, D_Reset: ;若复位8次的话Softconnect就不成功且Good_link不亮 lcall delay CPL D12_RESET djnz r4,D_Reset SETB D12_RESET;解除复位 lcall D12_Connect;Softconnect lcall Init_Timer0;初始化定时器0 loop: lcall delay CPL LED0 jnb CNT.4,loop_1 CPL LED1 loop_1: CLR CNT.4 sjmp loop Delay: ;0.13s mov R2,#0ffh delay1: mov R3,#0ffh delay2: nop nop djnz r3,delay2 djnz r2,delay1 ret T0_Isr: INC CNT reti ;中断0处理 Fn_Isr: SETB P3.2 reti D12_Connect: mov R0,#D12_COMMAND mov A,#0F3h movx @R0,A mov R0,#D12_DATA mov A,#00010000b movx @R0,A mov A,#00001011b movx @R0,A ret Init_Timer0: ;定时器0.032768s mov TMOD,#01h;16位模式 mov TH0,#00h mov TL0,#00h SETB ET0;允许定时中断 SETB TR0;开定时器 SETB PT0;高优先级 SETB EA;开总中断 ret end [编辑 - 7/8/03 by z_bing] |
|
|