qq_62031863 2021-09-17 23:22 采纳率: 0%
浏览 34

关于#单片机#的问题:所有方波频率为10Hz

P1.4引脚连接了一个按键,编写程序实现:上电后,P2.5直接输出占空比为30%的方波,按一下按键(按下后松开),P2.5输出占空比为60%的方波,再按一下按键,P2.5输出占空比为90%的方波,再按一下,P2.5输出返回到占空比为30%的方波,如此循环。
所有方波频率为10Hz,程序怎样设计?

  • 写回答

1条回答 默认 最新

  • m0_54204465 2023-02-02 08:27
    关注
    
    #include <reg52.h>
    #define uchar unsigned char
    #define uint unsigned int
    
    sbit KEY = P1^4; //定义按键
    uchar state = 0; //定义状态变量
    
    void delay(uint t) //延时函数
    {
    while (t--);
    }
    
    void main()
    {
    while(1)
    {
    switch(state)
    {
    case 0: //状态0,占空比30%
    P2 = 0x20;
    delay(3);
    P2 = 0x00;
    delay(7);
    if (KEY == 0) //如果按键按下
    {
    delay(10); //延时去抖
    state = 1; //改变状态
    }
    break;
    
    scss
    Copy code
            case 1:   //状态1,占空比60%
                P2 = 0x20;
                delay(6);
                P2 = 0x00;
                delay(4);
                if (KEY == 0)  //如果按键按下
                {
                    delay(10);  //延时去抖
                    state = 2;  //改变状态
                }
                break;
    
            case 2:   //状态2,占空比90%
                P2 = 0x20;
                delay(9);
                P2 = 0x00;
                delay(1);
                if (KEY == 0)  //如果按键按下
                {
                    delay(10);  //延时去抖
                    state = 0;  //改变状态
                }
                break;
    
            default:  //默认状态
                state = 0;  //回到状态0
                break;
        }
    }
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 9月17日

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献