2012-08-26 24 views
1

我的微控制器C8051F120的數據表,當涉及到讀取16位值PCA0L和PCA0H上明確:讀定時器計數器的值TMRnL和TMRnH在8051(C8051F120)

「讀PCA0L自動鎖存值PCA0H寫入「快照」寄存器;以下PCA0H讀取訪問此「快照」寄存器。首先讀取PCA0L寄存器可保證精確讀取整個16位PCA0計數器。

但是,我沒有找到關於TMRnL和TMRnH寄存器的類似聲明。我記得上Atmega128CAN90,我已經使用了以下

unsigned char chL,chH; 
#asm("cli") 
chL=TCNT3L; 
chH=TCNT3H; 
#asm("sei") 

有誰知道,如果上述報價也適用於C8051F120的TMRnL和TMRnH寄存器?或者,獲得一致閱讀的安全方法是什麼?中斷是否需要禁用? 感謝您的幫助!

回答

2

頁的datasheet的116表示:

的TCNTn的,OCRnx本身,與ICRn是可以通過AVR CPU通過8位數據總線可以訪問的16位寄存器。必須使用兩次讀取或寫入操作來對16位寄存器進行字節訪問。每個16位定時器都有一個8位寄存器,用於臨時存儲16位訪問的高字節。每個16位定時器內的所有16位寄存器共享相同的臨時寄存器。訪問低字節會觸發16位讀取或寫入操作。當CPU寫入一個16位寄存器的低字節時,存儲在臨時寄存器中的高字節和寫入的低字節都將在同一時鐘週期內複製到16位寄存器中。當CPU讀取一個16位寄存器的低字節時,16位寄存器的高字節會在讀取低字節的同一時鐘週期內複製到臨時寄存器中。

所以它確實出現了類似的事情正在發生。