当前位置:首页 > 单片机 > 单片机
[导读]在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 ;中断返回

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭