请各位看程序,功能一样,延时1分钟LED翻转:
一、 C语言
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar ta,tb;
sbit ysq=P3^7; //声明P3.7脚控制蜂鸣器
sbit led=P2^7; //声明P2.7脚控制LED灯
void Ti_init(void)
{
TMOD=0x00; //定时器0工作方式0
TH0=0xe0; //定时时间1ms
TL0=0x18;
TR0=1; //启动定时器
}
void main(void) //主程序开始
{
led=0;
ysq=0; //P3.7低电平
P0=0xf0;
Ti_init(); //调用定时器设置
for(;;)
{
while(!TF0)
TF0=0;
TH0=0xe0; //定时时间1ms
TL0=0x18;
if(++ta>=100)
{
ta=0;
tb++;
}
if(tb>=10)
{
tb=0;
led=!led;
P0=!P0;
}
}
}
二、汇编
org 0000h
ajmp main
org 0030h
main: mov 50h,#064h ;定时次数1
mov 51h,#00ah ;定时次数2
mov tmod,#000h ;定时器0,方式0状态设置,定时1ms
mov th0,#0e0h ;定时器高位置数
mov tl0,#018h ;定时器低位置数
mov P0,#0f0h
clr P3.7
setb P2.7
setb tr0 ;启动定时器0
loop: jbc tf0,loop1 ;定时器溢出转移至LOOP2
ajmp loop
loop1: mov th0,#0e0h ;定时器高位重新置数
mov tl0,#018h ;定时器低位重新置数
djnz 50h,loop ;定时达到100ms向下执行
mov 50h,#064h ;重新置数
djnz 51h,loop ;定时达到1000ms向下执行
mov 51h,#00ah ;
cpl P2.7
mov a,P0
cpl a
mov P0,a
ajmp loop ;返回
end
[ 此帖被ba2ba在2013-08-08 18:38重新编辑 ]