m0_59735307 2021-06-27 11:35 采纳率: 0%
浏览 8

单片机的这个程序题应该怎么解鸭,能不能教一教我

设系统时钟fosc=12MHZ,试编写一段程序,其功能设为定时器T0为工作方式2,并产生400us定时,用中断方法,控制p1.1输出周期为4ms的方波

  • 写回答

1条回答 默认 最新

  • Wali_yiwa59418 2023-04-18 01:16
    关注

    以下是该功能的程序代码:

    #include <reg52.h>
    
    sbit P1_1 = P1^1;
    
    void timer0_init() {
        TMOD &= 0xF0;   // 清空 Timer0 工作模式
        TMOD |= 0x02;   // 设置 Timer0 工作方式2(8位自动重装载定时器)
        TH0 = 0xFE;     // 初始值设为 FE16(计数器为 256-254=2)
        TL0 = 0x62;
        TR0 = 1;        // 启动定时器
        ET0 = 1;        // 使能 Timer0 中断
        EA = 1;         // 全局中断使能
    }
    
    void timer0_isr() interrupt 1 {
        static unsigned int count = 0;
        TH0 = 0xFE;     // 重新设置计数器初始值
        TL0 = 0x62;
        count++;
        if (count == 10) {      // 控制 P1.1 状态变化周期为 4ms
            P1_1 = ~P1_1;      // 取反 P1.1 状态
            count = 0;         // 计数器清零
        }
    }
    
    void main() {
        timer0_init();          // 初始化 Timer0
        while(1) {
            // 程序运行到此,定时器中断将控制 P1.1 的状态变化
        }
    }
    

    程序的原理是利用 Timer0 的工作方式2,设定计时器初值为 FE16,每次计数到 0 就会自动重装载初始值,从而实现定时 400us 的功能。同时,在 Timer0 的中断服务程序中对 P1.1 状态进行周期性的取反操作,控制输出周期为 4ms 的方波。

    评论

报告相同问题?

悬赏问题

  • ¥15 数电设计题 没有设计思路 不知道用什么芯片进行设计 求提供设计思路
  • ¥15 在动态多目标优化问题中,第一幅图展示的是问题DF6的相关定义和绘制的POS和POF图,请问图中公式PS(t)和PF(t)是如何推导的
  • ¥60 设计一种优化算法结合案例给出智能仓储四向穿梭车的调度计划
  • ¥15 Errno2:No such file or directory,在当前文件确实没有该图片,怎么解决?
  • ¥15 博世摄像头数据存储的问题(iscsi)
  • ¥15 如何实现对学生籍贯信息管理系统的选择排序
  • ¥15 写一个51单片机的时钟代码
  • ¥15 git clone报错
  • ¥15 3d-slicer超声造影动态图像导入报错
  • ¥15 化工过程分析与合成问题求解决