سلام بع تمام دوستان
من به یه مشکل عجیب و غزیر منتظره برخوردم
من برای اسمبلی از AVR Studio استفاده میکنم :nerd: یه برنامه دارم مینویسم که اولش به این مشکل برخوردم
مشکل اینه که نمیتونم توی رجیستر TCCR1B مقداری رو قرار بدم دقیقا من برای این کار از دستورات زیر استفاده میکنم
کد:
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