PDA

View Full Version : Alarm clock với PIC16F84A và LCD


aquakiss
22-12-2009, 10:22 PM
Mình đang tập làm 1 cái đồng hồ báo thức với PIC16F84A hiển thị với LCD mà chưa bít fai làm ntn? vì code = C thì ROM của 16F84 k đủ chứa(64 bytes) mà code = assembly thì lại chưa bít j! hix, a e nào bít cái nài chỉ mình với :(

namqn
23-12-2009, 07:56 AM
Mình đang tập làm 1 cái đồng hồ báo thức với PIC16F84A hiển thị với LCD mà chưa bít fai làm ntn? vì code = C thì ROM của 16F84 k đủ chứa(64 bytes) mà code = assembly thì lại chưa bít j! hix, a e nào bít cái nài chỉ mình với :(
Flash của PIC16F84 có 1 kword = 1024 word chứ không phải chỉ có 64 byte. Ngoài ra, PIC16F84 còn có 68 byte RAM và 64 byte EEPROM dữ liệu.

Thân,

minhtammechanic
23-12-2009, 02:26 PM
mình dùng 16f88 để pwm điều khiển dc, chân ra4 là đầu vào timer0/counter, nhưng timer0/counter khong chịu đếm mới chết chứ.
code của em:
#include "D:\DOAN3\project1\doan.h" //em da khai bao xung ngoai chia 1
#int_RDA
int dieukhien,thuc,lantran;
long thaydoi,b,xung,a;
RDA_isr()
{
dieukhien=getc();
}






void main()
{

setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_OFF);
setup_spi(FALSE);
setup_timer_0(RTCC_EXT_L_TO_H|RTCC_DIV_1); //timer0 dinh dang dem xung ngoai_counter0
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DIV_BY_4,24,1);
setup_ccp1(CCP_PWM);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
setup_oscillator(False);
ccp_pwm;

set_tris_a(255); // TODO: USER CODE!!
set_tris_b(255);




while(1){
xung=get_timer0(); // doc gia tri counter0
thuc=xung/5.4;
thaydoi=0;
if (dieukhien>thuc){ //dieukhien la tinh hieu may tinh truyen xuong
b=(dieukhien-thuc);
thaydoi=thaydoi+b;


}
if (dieukhien<thuc){
b=(thuc-dieukhien);
thaydoi=thaydoi-b;

}
putc(thuc); //truyen gia tri len may tinh
set_pwm1_duty(thaydoi); //dat lai gia tri cho pwm, neu dat la 200 se chay

delay_ms(500);

}
}


Em mới dùng CCS trước đây dùng MikroC, nên chưa rành lám mong chỉ giáo.