如果是有无波形,你的硬件上,肯定会引起中断,中断中检测这个IO对应寄存器的值就行。通常1表示高电平,0表示低电平。
如果要检测波形,那么我建议你的IO速度要比本身的方波周期小,相当于采样,你根据多次采样的关系确定波形类型。
如果是模拟出来的话,频率是1Mhz,首先你要有一个1Mx2的定时,这个2Mhz的定时每次计数到达的时候将对应的io口翻转,频率为1M周期为1us的方波就出来了。大部分单片机都有pwm功能直接配置寄存器使能就可以输出对应的频率方波。
以12M晶振,50ms为例用定时器写
以下是中断程序
void pwm_1() interrupt 1
{
th0=(65536-50000)/256
tl0=(65536-50000)%256
P1^0=~P1^0
}