#include<reg51.h>
sbit a=P1^1;
int b=100;
void main()
{ a=0;
TR1=1;
ET1=1;
EA=1;
TMOD=0x10;
while(1);
}
timerl() interrupt 3
{ for(;b<=100;b++)
{TH1=0xd8;
TL1=0xf0;
}
a=!a;
}
晶振是12MHZ...我这定时是10ms...循环100次。然后b的初值错了我把b的值改成了0...可是仿真时,灯还是闪的很快...
追答#include
#define uchar unsigned char
char cnt;
sbit LAMP=P1^1;
void initial(void)
{
TMOD=0X01;
TH0=-(50000/256);
TL0=-(50000%256);
ET0=1;
TR0=1;
EA=1;
}
void time0(void) interrupt 1
{
TH0=-(50000/256);
TL0=-(50000%256);
cnt++;
if(cnt=40)cnt=0;
}
void main(void)
{
initial();
while(1){
}
}
这个程序让P1.1的灯亮1S,灭1S. 参考一下
编程序时最好不要拿a、b作为变量
C51单片机,P1和P2口做为流水灯,P0口做为数码管输出,按键每按一次要求nu...
led1 = ~led; 这两个灯不变,也许你就要这个效果。程序就是这么编的。按键没有去抖,每次按下不一定是加一。初学不建议仿真,不是最好的学习方法,仿真实际电路是有差异的,这样你会误入歧途(言过了)。反正我是从不仿真。需要帮助加我
哪位大侠知道proteus中的traffic lights怎么用?
三个引脚分别对应三只灯,从你的图上来看,从上向下分别是绿黄红 控制的时候必须三只引脚都有控制信号(高电平或低电平)不能悬空。比如从上向下接:100(绿灯亮)010(黄红亮)001(红灯亮)
汇编DS18B20 传感器 AT89C51 串行显示 温度上限报警 仿真 PROTEUS
只是看了程序的一小部分,开头就有问题:用"EQU"来定义变量??EQU是等价赋值指令,例如 AAA EQU 88H 表示AAA的值就是88H。这样指令:MOV AX,AAA就相当于MOV AX,88H,即AX=88H,而不是取地址88H中的值。如果要定义变量,用DB、DW、DATA都可以.建议你再仔细检查,如果还有问题,再把代码...
请教大侠用AT89S52的定时器2来设置波特率同时带串口中断,因为我定时器...
没有几个可配置的,程序如下:PCON = 0; \/\/波特率不倍增 SCON = 0x50; \/\/串口方式1, 8-n-1, 允许接收.\/\/---下面就是用T2的设置.T2CON = 0x34;T2MOD = 0x00;RCAP2L = 0xf7; \/\/FFF7: 38400 bps RCAP2H = 0xff;TL2 = 0xf7;TH2 = 0xff;SBUF = 0x35;...