返回首页
当前位置: 主页 > 定时器/计数器 >

89C51单片机定时/计数器、P1口编程举例

时间:2009-08-23 16:32来源:未知 作者:牛牛 点击:
在89C51单片机的P1.0端口上接有一个发光二极管,P1.0输出低电平时发光二极管点亮,输出高电平时熄灭。P1.7接有一个开关,开关闭合时,P1.7为低电平,断开时为高电平。请设计一个控制程序,当开关闭合时,发光二极管每秒钟闪烁一次,当开关断开时,发光二极管
在89C51单片机的P1.0端口上接有一个发光二极管,P1.0输出低电平时发光二极管点亮,输出高电平时熄灭。P1.7接有一个开关,开关闭合时,P1.7为低电平,断开时为高电平。请设计一个控制程序,当开关闭合时,发光二极管每秒钟闪烁一次,当开关断开时,发光二极管每秒钟闪烁两次。已知系统使用12MHz的晶体。

LED BIT P1.0 ;发光二极管控制信号输出端口

KEY BIT P1.7 ;开关状态检测端口

CLOK EQU 20H ;时钟单元(单位:1/16秒)

SEC BIT CLOK.3 ;秒闪烁控制位

DSEC BIT CLOK.2 ;半秒闪烁控制位

ORG 0000H

LJMP MAIN ;至主程序

ORG 000BH

LJMP TTT ;至定时中断子程序

ORG 0030H

MAIN: MOV P1,#0FFH ;初始化端口

ANL TMOD,#0F0H

ORL TMOD,#01H ;设置定时器0为十六位定时器

MOV CLOK,#0 ;时钟单元初始化

MOV TH0,#0BH ;计数初值(定时1/16秒=62500us)

MOV TL0,#0DCH

SETB ET0 ;允许定时器0中断

SETB EA ;开中断

SETB TR0 ;启动定时器0

LOOP: ORL PCON,#1 ;主程序进入睡眠状态

单片机



LJMP LOOP

TTT: ORL TL0,#0DCH ;定时子程序,重装时常数

MOV TH0,#0BH

INC CLOK ;调整时钟

JB KEY,TTT1 ;检测开关状态

MOV C,SEC ;开关闭合,取秒闪烁信号

SJMP TTT2

TTT1: MOV C,DSEC ;开关断开,取半秒闪烁信号

TTT2: MOV LED,C ;控制发光二极管

RETI ;中断返回

顶一下
(7)
70%
踩一下
(3)
30%
------分隔线----------------------------
推荐内容