۰۲-فروردین-۱۳۸۶, ۰۲:۱۴:۵۶
چرا AVRدر این برنامه نمیتواند EPROMاش رابخواند؟
--------------------------------------------------------------------------------
به نظر شما چرا در برنامه آزمایشی زیر میکروی ATMEGA16 نمیتواند محتویات جدول lookup ذخیره شده در EEPROM اش را فراخونی وبازیابی نماید.چنانچه برنامه را روی AVR studioاجرا وrunکنیم بجای آنکه مقدار خواسته شده در مراحل برنامه بدست بیاید مرتب عدد 0xff بدست داده میشود.
ازپاسخ راهگشای شما متشکر خواهم شد.
--------------------------------------------------------------------------------
به نظر شما چرا در برنامه آزمایشی زیر میکروی ATMEGA16 نمیتواند محتویات جدول lookup ذخیره شده در EEPROM اش را فراخونی وبازیابی نماید.چنانچه برنامه را روی AVR studioاجرا وrunکنیم بجای آنکه مقدار خواسته شده در مراحل برنامه بدست بیاید مرتب عدد 0xff بدست داده میشود.
کد:
.include "m16def.inc"
rjmp RESET ;reset handle
;* Register variables
.def T1 = r1
.def T2 = r2
.def temp = r16
;* Code
;* Count display upwards repeatingly (0 -> 9 ->)
;* Register variables
.def bitCount = r17
.def data = r18
.def eset = r19
;* Code
RESET: ser eset
out DDRB, eset
out PORTB, eset ;all 7 segments ON (lamp test)
;for a second
clr eset
out PORTB, eset ;first all segments OFF
next_Count:
ldi bitCount, 0 ;reset up-counter
count_Up:
out EEARL, bitCount ;bitCount sets eeprom address
sbi EECR, 0 ;set eeprom read strobe
in data, EEDR ;get segments data from eeprom
out PORTB, data ;display the data for a sec
clr eset ;blank display
out PORTB, eset
inc bitCount
cpi bitCount, 10 ;if 10 then again, else continue
breq next_Count
rjmp count_Up ;keep counting up
;* Segments data table
.ESEG
table:
.db 0b00111111 ;data 0
.db 0b00000110 ;data 1
.db 0b01011011 ;data 2
.db 0b01001111 ;data 3
.db 0b01100110 ;data 4
.db 0b01101101 ;data 5
.db 0b01111100 ;data 6
.db 0b00000111 ;data 7
.db 0b01111111 ;data 8
.db 0b01100111 ;data 9
ازپاسخ راهگشای شما متشکر خواهم شد.