本帖最后由 ztb 于 2018-7-31 21:24 编辑
就是一个最简单的程序产生7.75K的方波,从示波器上看时钟在不停的抖动.使得频率在7.748--7.751之间跳动.
换一个单片机也是这样.
分析,由于程序非常简单,导致输出抖动的原因就只能是Fsys在抖动了!如此16位PWM的精度如何保证?
程序如下:
$NoMod51 ; 不使用标准MCS-51单片机的定义
$INCLUDE (N76E003.INC) ; 定义N76E003单片机的所有寄存器
cseg at 0 ; 定义汇编首地址为0x0000
using 0
main:
mov P0M2,#00100001b ; 设置IO口模式
mov P0M1,#10011000b
clr ea ; 关中断
loop:
djnz r0,loop ;256次R0-1,不是0就循环,延时
cpl p0.5 ; 使得 P0.5 输出状态反向
sjmp loop ; 跳转到 loop 循环
;
end
|