MTK8088单板机制作(五)10ms定时器生成器 C语言版

发布时间:2026/6/16 7:15:07

MTK8088单板机制作(五)10ms定时器生成器 C语言版 1.功能需求2.硬件3.完整可编译程序2MHz 晶振#include reg52.h #include intrins.h // 10ms 中断计数器 volatile unsigned char tick 0; // 位定义 sbit Z80_INT P3^7; // 触发 Z80 中断 sbit PULSE_OUT P1^7; // 1秒脉冲输出 // 简单延时函数机器周期级延时 void delay_cycles(unsigned char n) { while (n--) { _nop_(); // 空操作1个机器周期 } } // Timer0 中断服务程序每 10ms 自动调用 void timer0_isr(void) interrupt 1 { // 1. 重装初值10ms 2MHz机器周期 6μs TH0 0xF9; TL0 0x7D; // 2. 产生 P3.7 低脉冲触发 Z80 Z80_INT 0; delay_cycles(2); // 约 12μs 低电平 Z80_INT 1; // 3. 更新秒计数器 tick; // 4. 每满 100 次1秒执行一次动作 if (tick 100) { tick 0; // P1.7 输出低脉冲宽度约 180μs30个机器周期 PULSE_OUT 0; delay_cycles(30); PULSE_OUT 1; } } void main(void) { // 初始化 I/O 口 P1 0xFF; P3 0xFF; // 初始化 Timer016位定时器模式 TMOD 0x01; // 初值65536 - 1667 63869 0xF97D TH0 0xF9; TL0 0x7D; // 开启中断 ET0 1; // Timer0 中断允许 EA 1; // 总中断允许 // 启动定时器 TR0 1; // 主循环空闲等待中断 while (1) { // 可在此添加其他任务 } }

相关新闻