📄 8254_a.c
字号:
#include "8254_A.h"
#include "Delay_T0.h"
/*
06.05.13完成了计数器的工作,开始扩展两片
计数器采用ReadBack命令,
CLK0----10M
,65536*0.1US
CLK1----OUT0中间接74ls04反相器
373锁存
A0 Q0
A1 Q1
CS_A Q2
CS_B Q3
要做的有以下工作
*/
#define C0_A XBYTE[0x08]
#define C1_A XBYTE[0x09]
#define C2_A XBYTE[0x0A]
#define CW_A XBYTE[0x0B]
extern tWord idata Buff_8254_A[3];
extern tByte idata Status_8254_A[3];
tByte Get8254_DATA_A(tByte xdata *p0)
{
tByte Rst;
Rst =*p0;
return Rst;
}
// 读取状态,计数值,
void GetAll_A(void)
{
tByte high,low;
EA=0;
CW_A=0XC8;
Status_8254_A[2]=Get8254_DATA_A(&C2_A);
low =Get8254_DATA_A(&C2_A);
high =Get8254_DATA_A(&C2_A);
Buff_8254_A[2] =high*0x100+low;
CW_A=0XC4;
Status_8254_A[1]=Get8254_DATA_A(&C1_A);
low =Get8254_DATA_A(&C1_A);
high =Get8254_DATA_A(&C1_A);
Buff_8254_A[1] =high*0x100+low;
CW_A=0XC2;
Status_8254_A[0]=Get8254_DATA_A(&C0_A);
low =Get8254_DATA_A(&C0_A);
high =Get8254_DATA_A(&C0_A);
Buff_8254_A[0] =high*0x100+low;
EA=1;
}
void Init_8254_A(void)
{
CW_A=0X34;
CW_A=0X74;
CW_A=0XB4;
C0_A=0X00;
C1_A=0XFF;
C2_A=0X00;
C0_A=0X00;
C1_A=0XFF;
C2_A=0X00;
}
tLong Get_A(void)
{
tLong Rst;
GetAll_A();
_nop_();
// Init_8254_A();
if(Status_8254_A[1]==0xF4)//C1无效。
Rst=0x10000-Buff_8254_A[0];
if(Status_8254_A[1]==0xB4)//C1有效。
Rst=(0XFFFF-Buff_8254_A[1])*0X10000+0X10000-Buff_8254_A[0]+0x10000;
return Rst;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -