定时器实验,51单片机定时器实验
单片机定时器实验.
你的注释有的有错误,现重新更正如下
ORG 0000H
AJMP START
ORG 001BH ;外中断1入口地址
AJMP INT_T1
ORG 0100H
START:
MOV SP,#60H;设置堆栈深度
MOV TMOD,#10H ;置T1为方式1
MOV TL1,#00H ;延时50mS的时间常数
MOV TH1,#4BH
MOV R0,#00H;表格计数器
MOV R1,#20;1s计数器即20*50ms=1000ms=1s,得到所需要定时时间1s
SETB TR1;打开定时器1
SETB ET1:允许定时器1中断
SETB EA ;开总中断
SJMP $:等待
INT_T1: ;T1中断服务子程序
PUSH ACC ;保护现场
PUSH PSW
PUSH DPL
PUSH DPH
CLR TR1 ;关定时器
MOV TL1,#00H ;重新载入计数初值
MOV TH1,#4BH
SETB TR1 ;再次打开定时器
DJNZ R1,EXIT;判断是否到达20个50ms,如果没有则继续循环
MOV R1,#20 ;重新载入1s计数值
MOV DPTR,#DATA ;置常数表首地址 MOV A,R0 ;置常数表偏移量
MOVC A,@A+DPTR ;读常数表
MOV P1,A ;这里中的A决定是什么花色,也就是显示什么
INC R0;指向下一个数
ANL 00,#07H;
EXIT:
POP DPH ;恢复现场
POP DPL
POP PSW
POP ACC
RETI
LED显示常数表
DATA: DB 0FAH,0F5H,0AFH,05FH,0AAH,55H,00H,0FFH
END
总的来说显示什么样的花色是由你提前计算好,然后将对应的值放入表格中。比方说,你的led是共阴极接法,那么你要L1和L3亮就要给p1口送00000110B,这个值放到表格中等你用的时候从表格中取出来就行了
qt定时器图片切换实验目的是什么
qt定时器图片切换实验目的是:
1、实现图片的间隔切换和移动,要设置两个定时器,一个用来控制图片显示,另一个用来控制图片的额坐标移动。
2、实现计时器功能,点击打点按钮将当前时间打印出来。
数字电路实验(06)555定时器及其应用:多谐振荡器
555时基电路是一种将模拟功能与逻辑功能巧妙结合在同一硅片上的组合集成电路。555定时器构成的多谐振荡器能自行产生矩形脉冲的输出,是脉冲产生(形成)电路,它是一种无稳电路。
电容放电时间T2。电容放电时,时间常数τ2=R2C,起始值Vc(0+)=2/3Vcc,终值Vc(∞)= 0,转换值Vc(T2)=1/3Vcc,代入RC过渡过程计算公式进行计算,计算公式为:
T2=0.7R2C
电路振荡周期T,计算公式为:
T=T1+T2=0.7(R1+2R2)C
电路振荡频率f,计算公式为:
输出波形占空比q=T1/T,即脉冲宽度与脉冲周期之比,称为占空比。计算公式为:
q= T1/T=0.7(R1+R2)C/(0.7(R1+2R2)C)=( R1+R2)/( R1+2R2)
用555定时器构成多谐振荡器的原理图如图1所示。
图1电路为由555定时器构成的多谐振荡器。
实验要求:
构建图1电路。R1=51kΩ,R2=47kΩ;C1=C2=910nF;Vcc=5V。
交互式仿真分析参数设置为使用储能元件的初始条件,运行实验。
采用泰克示波器观察输出VOUT和电容C1两端的电压Vc的波形,并对输出波形的周期进行测量,记录于表1中。
表1 实验波形及数据
理论振荡周期T=0.7(R1+2R2)C=92.365ms
eNSP模拟实验-STP定时器
? ? 普通生成树STP不能实现快速收敛,STP中hello time定时器、max age定时器、forward delay定时器、未收到上游BPDU就重新开始生成树计算超时时间等参数会影响其收敛速度。可以通过配置合理参数实现快速的拓扑收敛。
? ??hello time定时器:hello time为周期发送BPDU来维护生成树的稳定时间,默认2秒。如果交换机在配置的超时时间范围内没有收到上游交换机发送的BPDU,则会重新进行生成树计算。在根交换机上配置的??hello time将作为这个生成树内所有交换机的??hello time。
? ??max age定时器:BPDU最大生存时间,默认20秒。交换机通比较上游交换机收到的BPDU中携带的message age(根桥发出为0,每经过交换机增加1)和max age来判断此BPDU是否超时。超时则将BPDU老化,同时阻塞接受该BPDU接口,并开始发出以自己为根桥的BPDU。在根交换机上配置的max age将作为这个生成树内所有交换机的max age。
????forward delay定时器:此延时时间为forward delay定时器时间,默认15秒。链路故障会引发网络重新进行生成树的计算,生成树的结构将发生相应的变化。不过重新计算得到的新配置消息无法立刻传遍整个网络,如果新选出的根端口和指定端口立刻就开始数据转发的话,可能会造成临时环路。为此,STP设计一种端口状态迁移机制,新选出的根端口和指定端口要经过2倍的forward delay延时后才能进入转发状态。这个延时保证了新的配置消息传遍整个网络,使所有参与STP计算的交换都能正确知晓网络状态,防止临时环路的产生。
? ? 超时时间=3*hello time*time factor
? ???max age ≥ 2(hello time+1 second)避免网络震荡。
? ? dis stp查看STP定时器。BPDU每2秒发送一次hello,最大老化时间为20秒,转发延迟为15秒,最大传递跳数为20跳。Config Times为本机配置值,Active Times为实际生效的值,与根交换机配置的一致。
Config Times :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Active Times? :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
????按照上一篇文章配置SW1优先级为primary,SW1优先级为second,四台交换机开启stp,模式为stp。在根交换机上修改forward-delay为20s。这时ping测试会出现大量丢包现象。
[SW1]stp timer forward-delay 2000? ??
? ? 在SW2上使用bridge-diameter设置网络直径为3,ping测试恢复。
[SW1]stp bridge-diameter 3
? dis stp查看STP定时器,MaxAge 变为12s ,FwDly变为 9s。
Config Times :Hello 2s MaxAge 12s FwDly 9s MaxHop 20
Active Times :Hello 2s MaxAge 12s FwDly 9s MaxHop 20
? ?查看SW4 stp端口状态,Ethernet0/0/2为根端口。
[SW4]dis stp brief
MSTID? Port? ? ? ? ? ? ? ? ? ? ? ? Role? STP State? ? Protection
? 0? ? Ethernet0/0/2? ? ? ? ? ? ? ROOT? FORWARDING? ? ? NONE
? 0? ? Ethernet0/0/3? ? ? ? ? ? ? ALTE? DISCARDING? ? ? NONE
? 0? ? Ethernet0/0/10? ? ? ? ? ? ? DESI? FORWARDING? ? ? NONE
? ? 关闭SW4的Ethernet0/0/2端口,Ethernet0/0/3端口成为根端口,Ethernet0/0/3端口从DISCARDING再经过LEARNING过度状态,最终到FORWARDING 状态需要经历?forward delay(9秒)的时间值。
8位存储器定时器实验原理
保证兼容性。AX通用寄存器存储二进制方式为为了保证兼容性,8位存储器定时器这四个寄存器都可以分为两个独立的8位寄存器使用。寄存器的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。
单片机定时器实验的代码怎么写?求详细注释。
如果是100ms中断一次,那么晶振需要用6MHz
#includereg51.h
#define?uchar?unsigned?char
uchar?t1,sec1,dscan=0,dis[3]={0,0,0};
uchar?table={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void?t0isr()?interrupt?1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t1++;
if(t1=20)
{
t1=0;
sec1++;
dis[0]=sec1%10;
dis[1]=sec1%100/10;
dis[2]=sec1/100;
}
}
void?t1isr()?interrupt?3
{
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
P2=1dscan;
P0=table[dis[dscan]];
}
main()
{
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
TR0=1;
ET0=1;
TR1=1;
ET1=1;
EA=1;
t1=0;
sec1=0;
while(1);
}