欢迎光临
我们一直在努力

MTK8088单板机制作(四)10ms定时器生成器

1.功能需求

2.硬件

三、Keil 工程配置说明(2MHz 晶振)

1. 新建工程

  • 打开 Keil uVision

  • Project → New uVision Project

  • 选择保存路径,输入项目名称(如 Timer0_2MHz)

2. 选择 CPU 型号

推荐选择以下任一型号(均可正常运行):

  • AT89C52(Atmel / Microchip)

  • STC89C52RC

  • DS89C420

  • 或任何标准 8052 兼容芯片

3. 添加汇编源文件

  • 右键 Source Group 1 → Add New Item → 选择 Assembly File (.asm)

  • 命名为 main.asm

  • 将上一轮回复中的完整汇编代码复制进去

4. 关键配置:晶振频率 ⭐

  • 点击 Target 1 图标(或 Project → Options for Target 'Target 1')

  • 切换到 Target 标签页

  • 在 Xtal (MHz) 输入框中填写:2

![设置示意]

text

Xtal (MHz): [2 ]

5. 输出 HEX 文件

  • 同窗口切换到 Output 标签页

  • 勾选 Create HEX File

  • 可选:勾选 Create Batch File

6. 编译与烧录

  • 按 F7 或点击 Build 按钮

  • 编译成功后生成 .HEX 文件

  • 使用编程器(如 STC-ISP、TL866、CH341 等)烧录到单片机

7. 仿真调试(可选)

  • 如果不需要硬件,可用 Keil 自带的软件仿真

  • 点击 Start/Stop Debug Session(Ctrl+F5)

  • 在 View → Watch Window 中添加变量 TICK

  • 在 View → Logic Analyzer 中观察 P1.7、P3.7 波形

完整可编译程序(2MHz 晶振)

$MOD52
;——————————————————————————-
; 数据段定义
DSEG AT 30H
TICK: DS 1 ; 10ms 计数器 (0-99)

;——————————————————————————-
; 代码段
CSEG AT 0
LJMP MAIN ; 复位入口

ORG 000BH ; Timer0 中断向量
LJMP TIMER0_ISR

;——————————————————————————-
; 主程序
CSEG AT 100H
MAIN:
; 初始化堆栈
MOV SP, #60H

; 初始化 I/O 口
MOV P1, #0FFH ; P1 口设为输入 / 高电平输出
MOV P3, #0FFH ; P3 口初始高电平

; 初始化变量
MOV TICK, #0

; 初始化 Timer0 (16位定时器模式)
MOV TMOD, #01H ; Timer0, 模式1 (16位)

; 定时初值: 2MHz 晶振, 10ms 中断
; 机器周期 = 6µs, 需要 1667 个机器周期
; 初值 = 65536 – 1667 = 63869 = 0xF97D
MOV TH0, #0F9H
MOV TL0, #07DH

; 开启中断
SETB ET0 ; 允许 Timer0 中断
SETB EA ; 总中断允许
SETB TR0 ; 启动 Timer0

; 主循环:空闲等待中断
SJMP $

;——————————————————————————-
; Timer0 中断服务程序 (每 10ms 执行一次)
TIMER0_ISR:
PUSH ACC
PUSH PSW

; 重装 Timer0 初值 (10ms @ 2MHz)
MOV TH0, #0F9H
MOV TL0, #07DH

; 1. 产生 P3.7 低脉冲 (触发 Z80 中断)
CLR P3.7
NOP ; 短暂延时 (6µs)
NOP ; 又一个延时 (6µs)
SETB P3.7

; 2. 更新 TICK 计数器
MOV A, TICK
INC A
MOV TICK, A
CJNE A, #100, ISR_EXIT ; 是否到达 1 秒?

; 3. 每 1 秒执行一次:P1.7 输出约 30 周期低脉冲
MOV TICK, #0 ; 重置计数器

CLR P1.7 ; 拉低 P1.7
MOV R7, #30
DJNZ R7, $ ; 延时约 30 个机器周期 (180µs)
SETB P1.7 ; 拉高 P1.7

ISR_EXIT:
POP PSW
POP ACC
RETI

;——————————————————————————-
END

赞(0)
未经允许不得转载:171主机测评 » MTK8088单板机制作(四)10ms定时器生成器
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址