楼主的意思是问,怎么才能让单片机自己去检测出来外部晶振是否正常工作了是吧?
这个在很多有多时钟源的单片机上都可以实现,比如MSP430和STM32,时钟源都有自动的容错功能,而且有时钟失效位。
只需要使用RC振荡器作为主时钟,并查询相应的时钟失效位就可以得知晶体是否正常工作了。
但是,在只有单晶体的单片机上就没有办法了,毕竟它没有时钟的话整个系统就已经停摆了,根本不可能再去处理这个事情了。
其实用示波器看晶振也不是很好的办法,
我有遇到过这样的现象:单片机仿真的时候程序没问题,单独运行程序的时候,程序完全没反应,检查硬件,电源OK,于是觉得是晶振的问题,才拿示波器探头点一下晶振的输出,程序马上运行了,晶振也有波形输出。
后来我们判断,示波器探头加载晶振上一个偏置电容,触发了晶振震荡。
当然,如果晶振能够完全的启震,用示波器,还是可以看看晶振震荡的波形和幅度,以及频率。
可以在单片机上电后用示波器测试晶振的引脚,看看波形是不是和晶振频率是一样的,
如果没有波形或者不一样,就要检查下有没接好单片机和电容是不是选对了。