最大初值是0,0是最大初值,代表65536,这取决于CF,0ffffh+1=65536;
8253内部有三个计数器,分别称为计数器0、计数器1和计数器2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。
每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。
8253的计数器是减法计数器,当初值为0时,0-1=ffffh(二进制计数)或0-1=9999(bcd计数);之后每次减1,初值为0时,计数个数最多(所以才称为最大计数初值,也就是计数范围最大最多),如果设为二进制计数,则能计65536个数,如果是bcd计数,则能计10000个数。
你可以理解为,先减一再判断,退出条件就是==0 true
因此输入初值0000H之后的运行过程
0-1 = 65535 == 0 --> false 继续
65535-1 = 65534 == 0 --> false 继续
。。。
2-1 = 1== 0 --> false 继续
1-1 = 0== 0 --> true 结束
因此对于0来说,实际计数次数就是65536次(从65535到0)
(当然了,这里是16进制的模式下,BCD码同理是10000次)
是啊
它是计数器没有标志寄存器 所以就没cf
0ffffh+1==65536
知道了吗