سلام،من میخوام با استفاده از تایمر زمان وصل بودن چهار سوئیچ رو ب صورت جداگانه رویlcd نمایش بدم.از lpc2138 و kailuvison استفاده میکنم.مشکلم اینه ک وقتی دوتا سوئیچ تو برنامه میذارم،برنامم درست کار می کنه اما وقتی سوئییچ ها رو ب 3 و 4 تا افزایش میدم،برنامم درست کار نمیکنه(منظورم توی شبیه سازی با پروتئوسه)ممنون میشم راهنماییم کنید.
اطلاعیه
Collapse
No announcement yet.
استفاده از 4 تایمر در lpc2138
Collapse
X
-
پاسخ : استفاده از 4 تایمر در lpc2138
[code=c]#include<lpc21xx.h>
#include"lcd.h"
#define T0CTCR (*((volatile unsigned long *) 0xE0004070))
void main(void)
{
int i,j,m,n;
char s[20];
PINSEL0=0;
//PINSEL1=0;
IODIR0=0xFF;
lcd_init();
sprintf(s,"project"
lcd_print(s);
PINSEL1|=3<<30; //CAP0.0 selected
PINSEL1|=2<<27; //CAP0.1 selected
PINSEL1|=2<<28; //CAP0.2 selected
PINSEL1|=2<<29; //CAP0.3 selected
PCONP|=1<<1; //PCTIM0 set T0 1??!
T0CTCR= 0; // TIMER MODE IS SELECTED
T0PR=1000; // PCLK IS 1/4 OF CCLK SO THE T0TC CLOCK IS 1/120 OF CCLK0
T1PR=1000;
while(1)
{if(((IOPIN1)&(1<<16))==0)
{T0TCR=1; //ENABLE TIMER/COUNTER
i=T0TC;
sprintf(s,"time1= %d ms ",i);
lcd_gotoxy(0,0);
lcd_print(s);
}
if(((IOPIN1)&(1<<16))!=0) T0TC=0;
if(((IOPIN1)&(1<<17))==0)
{T1TCR=1; //ENABLE TIMER/COUNTER
j=T1TC;
sprintf(s,"time2= %d ms ",j);
lcd_gotoxy(1,0);
lcd_print(s);
}
if(((IOPIN1)&(1<<17))!=0) T1TC=0;//agar ta in khat bashad dorost ejra mishavad
if(((IOPIN1)&(1<<18))==0)
{T0TCR=1; //ENABLE TIMER/COUNTER
m=T0TC;
sprintf(s,"time3= %d ms ",m);
lcd_gotoxy(2,0);
lcd_print(s);
}
if(((IOPIN1)&(1<<18))!=0)
T0TC=0;
if(((IOPIN1)&(1<<19))==0)
{T1TCR=1; //ENABLE TIMER/COUNTER
n=T1TC;
sprintf(s,"time4= %d ms ",n);
lcd_gotoxy(3,0);
lcd_print(s);
}
if(((IOPIN1)&(1<<19))!=0) T1TC=0;
}
}[/code]
فعلا باید از 2138 استفاده کنم تا بتونم شبیه سازی کنم با پروتئوس.درنهایت ک درست کار کرد تبدیلش میکنم به 1768 و پروگرام میکنم با هدربوردش.
دیدگاه
دیدگاه