IAR STM8 Delay Fonksiyonu

Katılım
19 Ağu 2011
Mesajlar
28
Puanları
1
Merhaba
IAR stm8 3.10 kullanmaktayım. Aşağıdaki kodlar içerisinde asm satırında hata vermekte. Bir türlü sorunu çözemedim yardımcı olabilecek birisi varsa çok teşekkür ederim.

Kod:
#include "stm8s.h"


#define F_CPU 16000000UL
#define ticks(val) ((((F_CPU * val) / 1000000UL) - 3) / 3)


void delay_cycles(register unsigned short value);
void delay_us(register unsigned int  value);
void delay_ms(register unsigned int value);

void delay_cycles(register unsigned short value)
{
  _asm("nop\n $N:\n decw X\n jrne $L\n nop\n ", value);
}


void delay_us(register unsigned int  value)
{
  delay_cycles(ticks(value));
}


void delay_ms(register unsigned int  value)
{
  while(value--)
  {
    delay_us(1000);
  }
}
 
Moderatör tarafında düzenlendi:
Ben stm8 kullanmayı biliyorum da asm de yazıyorum. Stm8 asm opcodeleri şahanedir stm8 için stvd
programıda asm de çok kullnışlı ve ücretsiz , neyse .

Senin kodda ilk başta söyliyim main() yok

ikincisi

nop\n $N:\n decw X\n jrne $L\n nop\n

jrne $L demişsin ama L labeli yok jrne $N desen olur galiba.
 
Ben stm8 kullanmayı biliyorum da asm de yazıyorum. Stm8 asm opcodeleri şahanedir stm8 için stvd
programıda asm de çok kullnışlı ve ücretsiz , neyse .

Senin kodda ilk başta söyliyim main() yok

ikincisi

nop\n $N:\n decw X\n jrne $L\n nop\n

jrne $L demişsin ama L labeli yok jrne $N desen olur galiba.


Merhaba. cevabınız için teşekkür ederim. Bu dosyayı .h olarak proje dosyasına #include komutu ile ekliyorum. asm yazmayı bilmiyorum acaba proje konfidürasyon ayarlarındanmıdır. cevabınızı müsait olduğumda deneyeceğim.

N olarak değiştirdiğimde de hata veriyor.
 
Moderatör tarafında düzenlendi:
void __delay(void)
{
unsigned long int j=30000;
while(j--);
}

Benim delay fonksiyonum budur. Ayriyetten kütüphane de kullanıyorum. Hata vermiyor.
 

Forum istatistikleri

Konular
128,185
Mesajlar
915,696
Kullanıcılar
449,956
Son üye
CharmanDear

Yeni konular

Geri
Üst