一、使用ADS1.2平台设计程序,并具有以下功能:(30分)
要求:在Micro 2440 平台下实现,串口输入字符控制蜂鸣器发声。
当串口发送‘a’、‘b’、‘c’、‘d’、时,蜂鸣器发出不同的声音。
(汇编语言,C、汇编混合编程都可以)
AREA |XIE|,CODE,READONLY
ENTRY
ldr r13, =0x1000
IMPORT Main
b Main
END
#define GPBDAT (*(volatile unsigned long*)0x56000014)
#define GPBCON (*(volatile unsigned long*)0x56000010)
#define GPBUP (*(volatile unsigned long*)0x56000018)
#define rULCON0 (*(volatile unsigned long*)0x50000000)
#define rUCON0 (*(volatile unsigned long*)0x50000004)
#define rURXH0 (*(volatile unsigned long*)0x50000024)
void U(void)
{
int i;
rULCON0&=0XFFFF00;
rULCON0|=0X03;接收字长 行控制寄存器p156
rUCON0=0X0805;控制寄存器 p156 0000 1000 0000 [0101 接受发送模式选择中断或查询]
for(i=0;i<100;i++)
;
GPBCON|=0X01;喇叭设置为输出
GPBDAT&=0XFFE; 0为喇叭不响
GPBUP=0X00;
}
int rb(void)
{
int rb;
rb=rURXH0;将新数据写到数据端口
return rb;
}
void beep_on(void)
{
GPBDAT|=0x01;控制喇叭响
}
void beep_off(void)
{
GPBDAT&=0xffe;控制喇叭不响
}
void delay(int n)
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
;
}
int Main()
{
U();
delay(100);
while(1)
{
if(rb()=='1')
{
beep_on();
delay(9000);
beep_off();
delay(9000);
}
if(rb()=='2')
{
beep_on();
delay(5000);
beep_off();
delay(5000);
}
if(rb()=='3')
{
beep_on();
delay(1000);
beep_off();
delay(1000);
}
if(rb()=='4')
{
beep_on();
delay(100);
beep_off();
delay(100);
}
}return 0;
}