سلام این برنامه برای نمایش ساعت با atmega16 نوشتم
میخوام از کریستال خارجی استفاده کنم
الان مشکل برنامه اینه که ثانیه شمار خیلی سریع کار میکنه
میخوام ثانیه شمار با ثانیه شمار ساعت همگام بشه
برای اینکار من ار deley استفاده کردم ولی بازم درست نشد
به نظرتون از کریستال خارجی درست استفاده کردم یانه ؟
در پروتئوس هم کریستال اصلا در مدار قرار نمی گیره
چرا؟
اینم کد برنامه !!!!
میخوام از کریستال خارجی استفاده کنم
الان مشکل برنامه اینه که ثانیه شمار خیلی سریع کار میکنه
میخوام ثانیه شمار با ثانیه شمار ساعت همگام بشه
برای اینکار من ار deley استفاده کردم ولی بازم درست نشد
به نظرتون از کریستال خارجی درست استفاده کردم یانه ؟
در پروتئوس هم کریستال اصلا در مدار قرار نمی گیره
چرا؟
اینم کد برنامه !!!!
کد:
[LEFT][INDENT] [FONT=Yekan]#include <mega16.h>[/FONT] [/INDENT][INDENT]#include <delay.h>[/INDENT][INDENT]#include <lcd.h>[/INDENT][INDENT]#include <stdlib.h>[/INDENT][INDENT]#include <stdio.h>[/INDENT][INDENT]#define xtal 8000000[/INDENT][INDENT] [/INDENT][INDENT]#define c1 PINB.5 [/INDENT][INDENT]#define c2 PINB.6 [/INDENT][INDENT]#define c3 PINB.7 [/INDENT][INDENT] [/INDENT][INDENT]#define ADC_VREF_TYPE 0x40[/INDENT][INDENT] [/INDENT][INDENT]#asm[/INDENT][INDENT].equ __lcd_port=0x15 ;PORTc[/INDENT][INDENT]#endasm[/INDENT][INDENT]char Time_flag=0,Time_counter=0;[/INDENT][INDENT]unsigned char H=0,M=0,S=0;[/INDENT][INDENT] [/INDENT][INDENT]int t=0; [/INDENT][INDENT]interrupt [TIM0_OVF] void timer0_ovf_isr(void)[/INDENT][INDENT]{[/INDENT][INDENT]t++;[/INDENT][INDENT]if(t==1)[/INDENT][INDENT] { [/INDENT][INDENT] S++;[/INDENT][INDENT] if(S==59)[/INDENT][INDENT] {[/INDENT][INDENT] S=0;[/INDENT][INDENT] if(Time_flag==1)[/INDENT][INDENT] Time_counter++; [/INDENT][INDENT] M++;[/INDENT][INDENT] if(M==59)[/INDENT][INDENT] {[/INDENT][INDENT] M=0;[/INDENT][INDENT] H++;[/INDENT][INDENT] if(H==24)[/INDENT][INDENT] {[/INDENT][INDENT] H=0; [/INDENT][INDENT] }[/INDENT][INDENT] }[/INDENT][INDENT] }[/INDENT][INDENT] t=0;[/INDENT][INDENT] } [/INDENT][INDENT]}[/INDENT][INDENT] [/INDENT][INDENT] [/INDENT][INDENT] [/INDENT][INDENT]void main(void)[/INDENT][INDENT]{ [/INDENT][INDENT]char buffer[10];[/INDENT][INDENT]lcd_init(16);[/INDENT][INDENT] PORTB=0X11111111;[/INDENT][INDENT] DDRB |=0B00011111; [/INDENT][INDENT] DDRA=0xFF;[/INDENT][INDENT] //Set Timer0[/INDENT][INDENT] TCCR0=0x00;[/INDENT][INDENT] // TCCR0 |=(1<<CS00)|(1<<CS01)|(1<<CS02);[/INDENT][INDENT] TCNT0=0x00; [/INDENT][INDENT] TIMSK=0x01;[/INDENT][INDENT] [/INDENT][INDENT] #asm("sei") [/INDENT][INDENT] while(1)[/INDENT][INDENT] {[/INDENT][INDENT] lcd_clear(); [/INDENT][INDENT] //neveshtan houre : minute :secends[/INDENT][INDENT] sprintf(buffer,"%d:%d:%d",H,M,S);[/INDENT][INDENT] lcd_puts(buffer);[/INDENT][INDENT] delay_ms(300);[/INDENT][INDENT] }; [/INDENT][INDENT]};[/INDENT][INDENT] [/INDENT] [/LEFT]
دیدگاه