No.38493 作者:gmf2008 邮件:gmf2008@mail2.nyist.net ID:93 登陆:68次 文章数:24篇 最后登陆IP:220.161.81.79 最后登陆:2007/1/13 9:11:56 注册:2003/3/11 18:18:00 财富:180 发帖时间:2003/7/28 8:37:15 发贴者IP:202.102.240.78 标题:gmf2008:[求助]帮我看看这个程序。 摘要:No.38493[求助]帮我看看这个程序。 各位好友: 我这里有一个程序,其中有一部分功能不能完全实现,我怎末也想不通是什么原因,功能是这样的,通过ADC0809的通道0采集电压信号,把采集到的数据进行处理,后送到串行显示器去显示,现在的问题是电压采集只能从2.5V到5V能被采集到,0到2.5V以后的电压值就采集不到了,并有死机现象,我把程序中各个子程序的功能说明一下: ADC_P : 数据采集程序 D_PROC : 数据处理处理程序 DIS_P ; 显示程序,虚拟串行显示 T0_P ; T0中断处理程序 T0_INI ; T0中断响应程序 这个程序是基于WINDOWS的消息写出来的,中断程序只在中断中设置相应的消息位, 主程序的任务是不断查询消息状态和响应中断,然后根据消息位,起动相应的消息响应程序,这个程序只起动通道0工作,请各位好友看看,问题到出到那里了.先谢了. INC_P EQU 32H D_BUF EQU 33H CHANNEL EQU 34H EOC BIT P1.0 VTXD BIT P1.1 VRXD BIT P1.2 LED21 EQU 30H LED43 EQU 31H LED1 EQU 14H LED2 EQU 15H LED3 EQU 16H LED4 EQU 17H ORG 0000H AJMP INI ORG 000BH AJMP T0_INI INI: MOV SP,#60H ;MOV TMOD,#01H ;MOV TH0,#0B1H ;MOV TL0,#0E0H;20MS ;SETB TR0 ;SETB EA ;SETB ET0 MOV 20H,#00H ;MESSAGE REG MOV CHANNEL,#00H; SETB 20H.2 ;------------MESSAGE PROCESS -- MESS:; JB 20H.1,TO_T0 JB 20H.0,TO_DIS JB 20H.2,TO_ADC JB 20H.3,TO_DATA SJMP MESS TO_DIS: ACALL DIS_P SJMP MESS TO_T0: ACALL T0_P SJMP MESS TO_ADC: ACALL ADC_P SJMP MESS TO_DATA:ACALL D_PROC SJMP MESS ;------------------------------ T0_P: PUSH ACC MOV A,INC_P CJNE A,#02H,T_BACK;WHEN 50MS COMES FETCH ADC MOV INC_P,#00H SETB 20H.2 ;SET ADC MSG SIGN T_BACK: CLR 20H.1 ;CLR T0_INT MSG SIGN POP ACC RET ;---------MESSAGE 1-------------- T0_INI: PUSH ACC PUSH PSW MOV TH0,#0D8H MOV TL0,#0F0H INC INC_P SETB 20H.1 ;SET T0_INT MSG SIGN CPL P3.0 POP PSW POP ACC RETI ;-------------------------------- ADC_P: PUSH DPH PUSH DPL MOV DPTR,#0000H;CHANNEL 0 WAS SELECTED MOVX @DPTR,A ;ALE/START IS '1' NOP ;START CHANGE JB EOC,$ JNB EOC,$ ;WAIT CHANGE OVER MOVX A,@DPTR ;OE IS '1' MOV D_BUF,A ;CHANGE value STORED IN D_BUF CLR 20H.2 ;CLR ADC_P MSG SIGN SETB 20H.3 ;SETB D_PROC MSG SIGN CPL P3.0 ; POP DPL POP DPH RET ;--------------------------------------------------------------- D_PROC: PUSH PSW PUSH DPH PUSH DPL SETB RS0 CLR RS1 MOV A,R3 CJNE A,D_BUF,D_NXT ;R3!=D_BUF,NEW DATA FETCHED SJMP D_EXT ;-------------THE PART OF CHECK TABLE ----------- D_NXT: MOV DPTR,#TAB0 MOV R3,D_BUF MOV A,R3 MOV B,#02H MUL AB ;A STORED LOW 8BITS ,B STORED HIGH 8BITS ADD A,DPL MOV DPL,A MOV A,DPH ADDC A,B MOV DPH,A CLR A MOVC A,@A+DPTR MOV LED43,A MOV A,#01H MOVC A,@A+DPTR MOV LED21,A SETB 20H.0 ;SET DIS_P MSG SIGN D_EXT: CLR 20H.3 ;CLR D_DPROCESS MSG SIGN; SETB 20H.2 ;SET ADC_P MSG SIGN CPL P3.1 POP DPL POP DPH POP PSW RET ;-------DIS_P-------------------- DIS_P: PUSH PSW SETB RS1 CLR RS0 ACALL F_CODE ;SEPARATE ONE WORD BCD CODE MOV A,LED3 MOV LED3,LED4 MOV LED4,A ......
>>返回讨论的主题
|