关于ARMs3c2440的问题。高手帮忙。全部分数给你

来源:百度知道 编辑:UC知道 时间:2024/06/30 13:12:07
是关于ARMs3c2440用于超声波测距的题目详细加我Q28182900。大体是
说明:
(1)为循环,不会自动跳出的。
(2)循环1000次,用来平均收发信号所产生的误差,放大计时结果。

程序代码要有相应的中文注释。
电路说明:采用ARM9 S3C2440芯片。要求用C程序编写一个超声波测距程序。程序很小,请在收到邮件后一天内完成。下图为接口,GPB6为超声波信号发射;GPB7为超声波信号接收。程序进行循环测距,无需显示输出,只要通过串口可以观察到相关信息即可

#include <iom.16.h>
#include <macros.h>
unsigned char com_in_buf[1];
void port_init(void)
{PORTA=0xff;
DDRA=0xff;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
}
void uart0_init(void)
{UCSRB=0x00;
UCSRA=0x00;
UCSRC=BTT(URSEL)|0x06;
UBRRL=0x33;
UBRRH=0x00;
UCSRB=0x98;
}
void send_data(unsigned char back)
{while(!(USSRA&(1<<UDRE)));
UDR=BAK;
}
#progma interrupt_handler uart0_rx_isr;
void uart0_rx_isr(void)
{com_in_buf[0]=UDR;
send_dat(com_in_buf[0]);
}
void init_devices(void)
{port_init();
uart0_init();
MCUCR=0x00;
CICR=0x00;
TIMSK=0x00;
SEI();
}
void main(void)
{char j;
init_devices();
while(1)
{
for(j=0;j<100;j++);

}

}