电路图表示: 8051中的PWM模块设计: 应该称为一个适合语音处理的PWM模块,输出引脚应该外接一积分电路。输出波形的方式适合作语音处理。设计精度为8位。 PWM模块应包括: 1、比较部分(Comp): 2、计数部分(Counter): 3、状态及控制信号寄存/控制器(PWM_Ctrl); 1)状态积寄存器:(Flags),地址:E8H; ①EN:PWM模块启动位,置位为„1‟将使PWM模块开始工作; ②(留空备用) ③④解调速率标志位:00–无分频;01–2分频;10–10分频;11–16分频。(RESET后为00) ⑤(留空备用) ⑥(留空备用) ⑦(留空备用) ⑧(留空备用) 注意:该寄存器可以位操作情况下可写,不可读;只能在字节操作方式下读取。 2)数据寄存器(DataStore),地址:F8H;注意:该寄存器值不可读,只可写。 4、端口: 1)数据总线(DataBus);(双向) 2)地址总线(AddrBus);(IN) 3)PWM波输出端口(PWMOut);(OUT) 4)控制线: ① CLK:时钟;(IN) ② Reset:异步复位信号;(IN低电平有效) ③ WR:写PWMRAM信号;(IN低电平有效); ④ RD:读PWMRAM信号;(IN低电平有效) ⑤ DONE:接受完毕反馈信号;(OUT高电平有效) ⑥ INT:中断申请信号;(OUT低电平有效) ⑦ IntResp:中断响应信号;(In低电平有效) ⑧ ByteBit:字节/位操作控制信号(IN1-BYTE0-BIT); ⑨⑩中断占用相当于MCU8051的外部中断2,则可保证在5个指令周期之内,“读取数据”中断必定得到响应。 PWM模块使用方法:因为占用了8051外部中断1,所以在不使用该模块时,应该把外部中断2屏蔽。而PWM模块产生的中断请求可以看作是“能接受数据”的信号。中断方法如后“中断读取数据过程”。使用PWM模块,应该先对内部地址8FH的数据寄存器写入数据,然后设置地址8EH的状态寄存器最低位(0)为"1",即PWM模块开始工作并输出PWM调制波(如TIMER模块)。在输出PWM调制波过程中,应及时对PWM写入下一个调制数据,保证PWM连续工作,输出波形连续。 中断读取数据过程: 1.PWM模块可以读取数据,申请中断信号INT置位为„0‟,等待8051响应; 2.8051接受到中断申请后,作出中断响应,置位IntResp信号线为„0‟; 3.PWM模块收到IntResp信号后,把中断申请信号INT复位为„1‟,等待8051通知读取数据WR信号; 4.8051取出要求数据放于数据总线(DataBus)上,并置WR信号为„0‟; (责任编辑:admin) |