【发布时间】:2014-02-26 21:07:38
【问题描述】:
我试图从 PIC16F84(在 MPLAB 中模拟)中的已初始化 EEPROM 中读取信息,但无法理解,为什么在调试器中我总是得到二进制“1010”(十六进制 = 0x0A),但在 EEPROM 中有 3 个值。我没有正确初始化它们,或者其他值可能以不同的顺序排列? 列表 p=16F84 基数十六进制
;---------------------------------------------------------------------
RP0 equ 5
STATUS equ 0x03
EEDATA equ 0x08
EEADR equ 0x09
EECON1 equ 0x88
RD equ 0
;----------------------------------------------------------------------
counter equ 0x10
pointer equ 0x15
;----------------------------------------------------------------------
BANK0 macro
bcf STATUS, RP0
endm
BANK1 macro
bsf STATUS, RP0
endm
;----------------------------------------------------------------------
org 0x2100 ; EEPROM Data
de b'1010', b'0110', b'0001'
org 0x0000
goto start
start:
BANK0
clrw ; WREG = 0
movlw 3 ; WREG = 3
movwf counter ; counter = WREG => 3
init:
clrw ; WREG = 0
read_data:
incf pointer, 1 ; pointer += 1
movf pointer, 0 ; WREG = pointer
movfw EEADR ; get address
BANK1
bsf EECON1, RD ; read
BANK0
movf EEDATA, W ; WREG = EEDATA
goto read_data
done_loop:
goto done_loop
end
【问题讨论】:
标签: assembly microcontroller pic microchip mplab