agape
15-11-2010, 23:39
سلام بع تمام دوستان
من به یه مشکل عجیب و غزیر منتظره برخوردم :baad:
من برای اسمبلی از AVR Studio استفاده میکنم :nerd: یه برنامه دارم مینویسم که اولش به این مشکل برخوردم
مشکل اینه که نمیتونم توی رجیستر TCCR1B مقداری رو قرار بدم :unh: دقیقا من برای این کار از دستورات زیر استفاده میکنم
ldi r16,(1<<CS10 | 1<<WGM12)
sts tccr1b,r16
مقدار 9 توی رجیستر R16 قرار میگیره ولی نمیره توی TCCR1B من که پاک گیج شدم نمیدونم مشکل از کجاست همین مشکلات رو با رجیستر های TIMSK , ocr1ah , ... دارم
میکروی مورد نظر هم مگا 16 است
اینم لیست برنامه
.include "m16def.inc"
.org 0
rjmp RESET
RESET:
; ************************************************** **************************************
; **** IO PORT A SETUP
; ************************************************** **************************************
sbi ddrb,0 ; HORIZONTAL SYNC PULSE
sbi ddrb,1 ; VERTICAL SYNC PULSE
sbi ddrb,2 ; TEST LED
; ************************************************** **************************************
; **** STARTUP SEQUENCE
; ************************************************** **************************************
; STACK POINTER
ldi r16,low(ramend)
out spl,r16
ldi r16,high(ramend)
out sph,r16
; SET TIMER1 TO SCLK WITH RESET
ldi r16,(1<<CS10 | 1<<WGM12)
sts tccr1b,r16
; SET TIMER1 MATCH A INTERRUPT
ldi r16,(1<<OCIE1A)
sts timsk,r16
; SET TIMER1 INTERRUPT TIME A VALUE
ldi r16,high(636)
sts ocr1ah,r16
ldi r16,low(636)
sts ocr1al,r16
من به یه مشکل عجیب و غزیر منتظره برخوردم :baad:
من برای اسمبلی از AVR Studio استفاده میکنم :nerd: یه برنامه دارم مینویسم که اولش به این مشکل برخوردم
مشکل اینه که نمیتونم توی رجیستر TCCR1B مقداری رو قرار بدم :unh: دقیقا من برای این کار از دستورات زیر استفاده میکنم
ldi r16,(1<<CS10 | 1<<WGM12)
sts tccr1b,r16
مقدار 9 توی رجیستر R16 قرار میگیره ولی نمیره توی TCCR1B من که پاک گیج شدم نمیدونم مشکل از کجاست همین مشکلات رو با رجیستر های TIMSK , ocr1ah , ... دارم
میکروی مورد نظر هم مگا 16 است
اینم لیست برنامه
.include "m16def.inc"
.org 0
rjmp RESET
RESET:
; ************************************************** **************************************
; **** IO PORT A SETUP
; ************************************************** **************************************
sbi ddrb,0 ; HORIZONTAL SYNC PULSE
sbi ddrb,1 ; VERTICAL SYNC PULSE
sbi ddrb,2 ; TEST LED
; ************************************************** **************************************
; **** STARTUP SEQUENCE
; ************************************************** **************************************
; STACK POINTER
ldi r16,low(ramend)
out spl,r16
ldi r16,high(ramend)
out sph,r16
; SET TIMER1 TO SCLK WITH RESET
ldi r16,(1<<CS10 | 1<<WGM12)
sts tccr1b,r16
; SET TIMER1 MATCH A INTERRUPT
ldi r16,(1<<OCIE1A)
sts timsk,r16
; SET TIMER1 INTERRUPT TIME A VALUE
ldi r16,high(636)
sts ocr1ah,r16
ldi r16,low(636)
sts ocr1al,r16