请大家帮忙看一看,哪里有问题,不能用proteus仿真 #include <libm.h> #include <reg52.h> #include <intrins.h> #include <absacc.h> void system_initial(void); void select_channel(unsigned char channel_number); unsigned char ad_converter(unsigned char channel_number); unsigned char dat_deal(unsigned char dat); unsigned char converter_data[8]={0}; unsigned char display_buffer[4]; unsigned char channel=0x1f; sbit start_converter=P3^1; sbit output_enable=P3^2; sbit converter_over=P3^0; void main(void) { system_initial(); TMOD=0x01; TH0=(65536-4000)/256; TL0=(65536-4000)%256; TR0=1; ET0=1; EA=1; while(1) { unsigned char i=0; converter_data=ad_converter(0); //readding converter data; display_buffer[1]=cathode_led_code[converter_data/100]; display_buffer[0]=cathode_led_code[converter_data%100]; display_buffer[2]=cathode_led_code[display_buffer[0]/10]; display_buffer[3]=cathode_led_code[display_buffer[0]%10]; display_buffer[0]=cathode_led_code; } } void t0(void) interrupt 1 using 0 { static unsigned char led_segment=0xe0; static unsigned char led_index=0; TH0=(65536-4000)/256; TL0=(65536-4000)%256; P0=display_buffer[led_index]; P2=led_segment; led_segment++; if (++led_index > 3) { led_index = 0; led_segment = 0xe0; } } void system_initial(void) { start_converter=0; output_enable=0; converter_over=1; P3= P3 | channel; } void select_channel(unsigned char channel_number) { channel_number <<= 5; //將通道數移到高3位。 P3=channel_number | 0x1f; //output channel } unsigned char ad_converter(unsigned char channel_number) { unsigned char converter_data=0; select_channel(channel_number); start_converter=0; start_converter=1; _nop_(); _nop_(); start_converter=0; while (converter_over == 0); output_enable=1; converter_data=P1; //readding converter data; output_enable=0; return converter_data; } |