标题:
单片机P1.0和P1.7输出不同时间的定时器
[打印本页]
作者:
hts2008222
时间:
2014-9-22 23:29
标题:
单片机P1.0和P1.7输出不同时间的定时器
ORG 00H;
START:
MOV TMOD,#10H; 设置Timer1工作在模式1下
MOV R1,#50; R1为重复定时计数器(R1=50,1s)(R1=100,2s)最大255
LOAD:
MOV TL1,#0E0H; 往TL1和TH1中载入计数的初始值B1E0H
MOV TH1,#0B1H;
SETB TR1; 启动Timer1
CHECK:
JNB TF1,CHECK; 检测Timer1标志,当TF1=1,跳出执行下一行
CLR TR1; TR1清0 关闭Timer1
CLR TF1; 将TF1清0
DJNZ R1,LOAD; 如果R1≠0,跳回LOAD重新装载计数初始值
CLR P1.7;
MOV R1,#10;(10s)
D1: MOV R2,#1;(1Min)
D2: MOV R3,#100 ; 延时子程序(1000ms)
D3: MOV R4,#20 ;
D4: MOV R5,#248;
DJNZ R5,$ ;
DJNZ R4,D4 ;
DJNZ R3,D3 ;
DJNZ R2,D2 ;
DJNZ R1,D1 ;
SETB P1.7;
MOV R1,#30;(60s)
D5: MOV R2,#1;(10Min)
D6: MOV R3,#100 ; 延时子程序(1000ms)
D7: MOV R4,#20 ;
D8: MOV R5,#248;
DJNZ R5,$ ;
DJNZ R4,D8 ;
DJNZ R3,D7 ;
DJNZ R2,D6 ;
DJNZ R1,D5 ;
SETB P1.0; 将P1.0口置高电平1,使LED灯灭
MOV R1,#1;(60s)
L1: MOV R2,#1;(10Min)
L2: MOV R3,#100 ; 延时子程序(1000ms)
L3: MOV R4,#20 ;
L4: MOV R5,#248;
DJNZ R5,$ ;
DJNZ R4,L4 ;
DJNZ R3,L3 ;
DJNZ R2,L2 ;
DJNZ R1,L1 ;
CLR P1.0; 将P1.0口置低电平0,使LED灯亮
MOV R1,#1;(60s)
L5: MOV R2,#1;(10Min)
L6: MOV R3,#100 ; 延时子程序(1000ms)
L7: MOV R4,#20 ;
L8: MOV R5,#248;
DJNZ R5,$ ;
DJNZ R4,L8 ;
DJNZ R3,L7 ;
DJNZ R2,L6 ;
DJNZ R1,L5 ;
LJMP START;
END; 程序结束(总延时1s)
作者:
明白
时间:
2014-9-23 08:52
支持一下,
P1.0输出频率永远是P1.7输出频率的两倍
P1.7的周期藏于P1.0高电平期间
作者:
mqwu
时间:
2014-9-23 14:00
天生都没有学汇编,看不懂喔!
作者:
hts2008222
时间:
2014-9-23 22:41
可以没学C啊,但我相信学得会简单的
作者:
雪中梅花
时间:
2014-9-26 15:10
学习了谢谢楼主
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1