Board logo

标题: [原创] [打印本页]

作者: libm    时间: 2008-1-25 16:27     标题: [原创]

请大家帮忙看一看,哪里有问题,不能用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;
}


作者: libm    时间: 2008-1-25 16:29

图片为接线图






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0