ARM硬件综合

在超级终端输入:

“LEDI”点亮1号LED 灯;

“LED2”点亮2号LED灯;

“LED3”点亮3号LED 灯;

“LED4”点亮4号LED灯;

“LED5”蜂鸣器响一次。

说明:

(1)在键盘上输入的字符需要在超级终端上显示;

(2)左边为1号LED灯,右边为4号LED灯;

(3)完成实验记一次实验平时成绩;

(4)写一次实验报告,在报告中体现所完成实验的代码;

(5)蜂鸣器响要将JP9 短接;

第一步打开超级终端。

选择每秒位数为115200,选择数据流控制为无。

第二步打开驱动,并进行复位。

第三步打开项目

在main.c中编写如下程序。

#include  "config.h"
// 定义LED控制口 (输出高电平时点亮LED)
#define  LED1_CON       (1<<11)     /* GPE11口 */
#define  LED2_CON       (1<<12)     /* GPE12口 */
#define  LED3_CON       (1<<4)      /* GPH4口  */
#define  LED4_CON       (1<<6)      /* GPH6口  */
// 定义蜂鸣器控制口
#define     BEEP            (1<<10)     /* GPH10口 */    
#define     BEEP_MASK       (~BEEP)
void  DelayNS(uint32  dly)
{  
    uint32  i;

    for(; dly>0; dly--) 
       for(i=0; i<50000; i++);
}
void  LED_DispAllOff(void)
{  
    rGPEDAT = rGPEDAT & (~(0x03<<11));  
    rGPHDAT = rGPHDAT & (~(0x05<<4));  
}
void  RunBeep(void)
{  
    rGPHDAT = rGPHDAT & BEEP_MASK;      // BEEP = 0
    DelayNS(300);
    rGPHDAT = rGPHDAT | BEEP;           // BEEP = 1 
    DelayNS(300);
}
uint8  g_getch = 0;
int  main(void)
{   
    int  i;
    // 初始化I/O
    rGPECON = (rGPECON & (~(0x0F<<22))) | (0x05<<22);   // rGPECON[25:22] = 0101b,设置GPE11、GPE12为GPIO输出模式
    rGPHCON = (rGPHCON & (~(0x33<<8))) | (0x11<<8);     // rGPHCON[13:8] = 01xx01b,设置GPH4、GPH6为GPIO输出模式
    rGPHCON = (rGPHCON & (~(0x03<<20))) | (0x01<<20);   // rGPHCON[21:20] = 01b,设置GPH10为GPIO输出模式
    UART_Select(0);     // 选择UART0
    UART_Init();        // 初始化UART0
    for(i=0; i<1; i++)
    {
        UART_SendStr("Hello World!\n");
    } 
    while(1)
    {
        //将灯熄灭
        LED_DispAllOff();
        DelayNS(300);
        g_getch = UART_GetKey();   
        
        if(g_getch == 0x0D)       
        {
            UART_SendByte('\r');    
            UART_SendByte('\n');
        }
        else
        {
            UART_SendByte(g_getch); 
        }
        if(g_getch==0x4C)
        {
            g_getch = UART_GetKey();   
            UART_SendByte(g_getch); 
            if(g_getch==0x45)
            {
                g_getch = UART_GetKey(); 
                UART_SendByte(g_getch);
                if(g_getch==0x44)
                {
                g_getch = UART_GetKey();    
                UART_SendByte(g_getch); 
                    if(g_getch==0x31)//判断是否为LED1
                    {
                        rGPEDAT = rGPEDAT | (0x01<<11); 
                    } else if (g_getch==0x32)//判断是否为LED2
                    {
                        rGPEDAT = rGPEDAT | (0x02<<11);
                    } else if (g_getch==0x33)//判断是否为LED3
                    {
                        rGPHDAT = rGPHDAT | (0x01<<4);
                        
                    } else if (g_getch==0x34)//判断是否为LED4
                    {
                       rGPHDAT = rGPHDAT | (0x04<<4);
                    } else if (g_getch==0x35)//判断是否为LED5
                    {
                        RunBeep();
                    }
                }
            }
        }
        DelayNS(300);
    }
    return(0);
}

首先Remove Object Code,然后编译链接,运行程序。

成功进入程序的main函数中。

查看超级终端,并输入LED1,显示如下。

输入LED3,显示如下。

输入LED4,显示如下。

输入LED5试验箱会发出蜂鸣。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LorraineWen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值