pamfer1 2023-06-14 21:04 采纳率: 100%
浏览 41
已结题

cc2530单片机怎么用按键控制LED1亮灭和发送字符串?(语言-c语言)

cc2530单片机
通电后,LED1处于灯灭的状态
第一次按下按键,LED1亮, 发送字符串"LED1点亮"
第二次按下按键,LED1灭,发送字符串"LED1熄灭"
如此循环下去

任务要求:
(1)使用串口0发送字符串
(2)串口0使用位置1
(3)串口波特57600bit/s
(4)需要对按键进行消抖处理

任务模块:
1.工程
2延时函数
3.IO初始化
4串口初始化
5发送字节函教和发送字符串函数
6.按键消抖
7.注释
8.功能完整实现并有串口数据截图

  • 写回答

4条回答 默认 最新

  • 四川底层昏昏pig 2023-06-14 21:32
    关注
    
    #include <ioCC2530.h>
    
    #define LED1 P1_0
    #define KEY1 P1_1
    
    void delay_ms(unsigned int ms)
    {
        unsigned int i, j;
        for (i = 0; i < ms; i++)
        {
            for (j = 0; j < 5355; j++)
            {
            }
        }
    }
    
    void io_init(void)
    {
        P1SEL &= ~(BIT0 | BIT1);
        P1DIR |= BIT0;
        P1DIR &= ~BIT1;
        P1INP |= BIT1;
    }
    
    void uart_init(void)
    {
        PERCFG |= 0x01;
        P0SEL |= BIT4 | BIT5;
        U0CSR |= 0x80;
        U0GCR |= 11;
        U0BAUD = 216;
        U0CSR &= ~0x04;
    }
    
    void send_byte(unsigned char ch)
    {
        U0DBUF = ch;
        while (!(U0CSR & 0x02))
            ;
        U0CSR &= ~0x02;
    }
    
    void send_string(unsigned char *str)
    {
        while (*str != '\\0')
        {
            send_byte(*str++);
        }
    }
    
    unsigned char key_scan(void)
    {
        if (KEY1 == 0)
        {
            delay_ms(5);
            if (KEY1 == 0)
            {
                while (!KEY1)
                    ;
                return 1;
            }
        }
        return 0;
    }
    
    void main(void)
    {
        unsigned char flag = 1;
        unsigned char key_val = 0;
        io_init();
        uart_init();
        while (1)
        {
            key_val = key_scan();
            if (key_val)
            {
                if (flag)
                {
                    LED1 = 1;
                    send_string("LED1点亮");
                    flag = 0;
                }
                else
                {
                    LED1 = 0;
                    send_string("LED1熄灭");
                    flag = 1;
                }
            }
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 6月23日
  • 已采纳回答 6月15日
  • 创建了问题 6月14日

悬赏问题

  • ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
  • ¥15 陆空双模式无人机飞控设置
  • ¥15 sentaurus lithography
  • ¥100 求抖音ck号 或者提ck教程
  • ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)
  • ¥20 web页面如何打开Outlook 365的全球离线通讯簿功能
  • ¥15 io.jsonwebtoken.security.Keys
  • ¥15 急,ubuntu安装后no caching mode page found等
  • ¥15 联想交换机NE2580O/NE1064TO安装SONIC
  • ¥15 防火墙的混合模式配置