| N9 | N8 | N7 | N6 | N5 | N4 | N3 | N2 | N1 | N0 | X | X | X | X | X | X |
10位二進制數決定了除法寄存器的值N,10位二進制數的值加2就是N的值。例如:0000000000表示2分頻,1111111111表示1025分頻。
BUS寄存器(8位):
| - | - | - | - | WC | A2 | A1 | A0 |
如果WC=0,表示每次操作控制寄存器后自動保存到EEPROM中;如果WC=1表示只有對控制寄存器進行寫操作時才把值保存到EEPROM中。A3A2A1代表該DS1077芯片在總線操作中的地址。因此,同一系統中最多可接入8個DS1077。,
2 系統硬件電路及工作原理
可編程CMOS頻率合成器DS1077在單片機系統中的硬件電路如圖2所示。
在圖2中,可編程CMOS頻率合成器DS1077的輸出引腳OUT1接到單片機AT89C51的XTL1引腳,單片機的XTL2引腳不接,DS1077的輸出引腳OUT0不使用(在軟件中禁止),CRTL1和CTRL0接地。由于AT89C51單片機沒有二線串行接口,所以把DS1077的SCL和SDA接到單片機的P1.0和P1.1,用單片機的P1.0和P1.1模擬二線串行接口。
可編程CMOS頻率合成器DS1077設定為:引腳OUT0禁止使用;引腳OUT的輸出頻率略低于單片機的最高工作頻率;BUS寄存器的WC位置1(只有向頻率合成器DS1077發出寫命令時才把各個寄存器的值寫入EEPROM中)。這樣,在每次啟動單片機系統時,單片機總運行在較高的工作頻率;當完成了系統的初始化后,單片機就可以根據工作情況重新設置適合的工作頻率。在單片機工作過程中,最好不要向頻率合成器DS1077發出寫EEPROM命令。因為重新設置工作頻率即使超出了單片機的頻率范圍,造成單片機死機,由于寄存器的值沒有寫入EEROM中,當重新啟動時,單片機仍然能夠工作;如果把錯誤的工作頻率寫入EEPROM中,會造成系統不能重新啟動,此時只能取下DS1077芯片,用其他工具對它進行重新編程。
3 系統頻率改變對RS232串行通訊的影響及動態調整工作頻率時的解決辦法
在單片機系統中,時鐘頻率與RS232串行通訊有著密切的關系。例如,對于使用12MHz晶振的系統(早期的8051的最大工作頻率是12MHz),表4顯示了定時器1的自動重新載值與波特率之間的關系、與標準波特率的誤差。
表4 定時器1的自動重裝載值與波特率之間的關系、與標準波特率的誤差
| 定時器1自動重裝載值 | 實際波特率 | 理想值 | 波特率誤差(%) |
| 255 | 31250 | 28800 | 8.5 |
| 254 | 15625 | 14400 | 8.5 |
| 253 | 10417 | 9600 | 8.4 |
| 249/250 | 4464 | 4800 | 7/88.5 |
| 243 | 2404 | 2400 | 0.16 |
波特率=2SMOD/32×{fosc/[12×(256-TH1)]}
其中,fosc為振蕩頻率,SMOD為單片機的波特率倍增位,TH1為定時器1的自動重裝載值。
在RS232串行通訊時,波特率發生器的誤差一般都不允許超過3%,否則就會造成通訊失敗,也就是說在采用12MHz晶振的51系統中只能夠使用2400波特率進行RS232通訊。顯然這在很多情況下都不能滿足系統需要。為了滿足RS232串行通訊的需要,通常選用少數特殊頻率的晶振,如11.059MHz和22.118MHz。這大大減小了波特率發生器的誤差(見表5),但也使得設計的靈活性大大降低。
表5 特殊頻率的晶振下波特率發生器的誤差





