微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机入门实验九

单片机入门实验九

时间:11-24 来源:互联网 点击:
;*****************************************;

;实验名称: 定时器T0控制LED灯闪烁时间的实验;
;作者: 龙谊
;版本: VER 1.0
;说明: 使用定时器T0
;修改:
;编程语言: 汇编语言

;******************************************;

一、工作模式0

ORG00H
MOVTMOD,#00H ;设定定时器T0工作为模式0
START: CPLP0.0 ;位P0.0做取反处理,使LED灯亮与灭交替工作
MOVR1,#100 ;延时0.2秒
CALLDELAY ;设定时间为2毫秒(即2000微秒)
JMPSTART
DELAY: SETBTR0 ;启动定时器T0开始计时
D1: MOVTL0,#(8192-2000)MOD 32 ;设定TL0的值
MOVTH0,#(8192-2000)/32 ;设定TH0的值
D2: JBCTF0,D3 ;TF0=1?是就跳到D3,同时清除TF0
JMPD2 ;不是则跳到D2
D3: DJNZR1,D1 ;定时够0.2秒了吗?
CLRTR0 ;够了则停止T0计时
RET
END

二、工作模式1

ORG00H
MOVTMOD,#01H ;设定定时器T0工作为模式1
START: CPLP0.0 ;位P0.0做取反处理,使LED灯亮与灭交替工作
MOVR1,#20 ;延时0.2秒
CALLDELAY ;设定时间为10毫秒(即10000微秒)
JMPSTART
DELAY: SETBTR0 ;启动定时器T0开始计时
D1: MOVTL0,#(65536-10000)MOD 256 ;设定TL0的值
MOVTH0,#(65536-10000)/256 ;设定TH0的值
D2: JBCTF0,D3 ;TF0=1?是就跳到D3,同时清除TF0
JMPD2 ;不是则跳到D2
D3: DJNZR1,D1 ;定时够0.2秒了吗?
CLRTR0 ;够了则停止T0计时
RET
END

三、工作模式2

ORG00H
MOVTMOD,#02H ;设定定时器T0工作为模式2
START: CPLP0.0 ;位P0.0做取反处理,使LED灯亮与灭交替工作
MOVR2,#04 ;延时0.2秒
LOOP:MOVR1,#200 ;延时50毫秒
CALLDELAY ;设定时间为250微秒
DJNZR2,LOOP ;定时够0.2秒了吗?
JMPSTART
DELAY: SETBTR0 ;启动定时器T0开始计时
D1: MOVTL0,#(256-250) ;设定TL0的值
MOVTH0,#(256-250) ;设定TH0的值
D2: JBCTF0,D3 ;TF0=1?是就跳到D3,同时清除TF0
JMPD2 ;不是则跳到D2
D3: DJNZR1,D1 ;定时够50毫秒了吗?
CLRTR0 ;够了则停止T0计时
RET
END

四、工作模式3

ORG00H
MOVTMOD,#03H ;设定定时器T0工作为模式3
START: CPLP0.0 ;位P0.0做取反处理,使LED灯亮与灭交替工作
MOVR2,#04 ;延时0.2秒
LOOP: MOVR1,#200 ;延时50毫秒
CALLDELAY ;设定时间为250微秒
DJNZR2,LOOP ;定时够0.2秒了吗?
JMPSTART
DELAY: SETBTR0 ;启动定时器T0开始计时
D1: MOVTL0,#(256-250) ;设定TL0的值
D2: JBCTF0,D3 ;TF0=1?是就跳到D3,同时清除TF0
JMPD2 ;不是则跳到D2
D3: DJNZR1,D1 ;定时够50毫秒了吗?
CLRTR0 ;够了则停止T0计时
RET
END

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top