You are on page 1of 6

HBK Tp HCM BMT GVPT: H Trung M Mt s TD lp trnh C cho PIC vi CCS C Ch : PIC c dng trong cc TD ny l PIC16F84 hay PIC16F877.

. Trong cc chng trnh C khng ghi #fuses (s t to ra khi ta chn PIC t u khi m CCS C cho project mi) M phng phn cng dng Proteus version t 7.4 tr ln. n gin trong Proteus cc hnh v khng c v phn ni vi thch anh hay RC phn dao ng. TD 1: LED chaser (1 LED sng c chy t tri qua phi port B [khi chn RA0=1] hoc t phi sang tri [khi chn RA0=0]). S mch: (Gi s phm nhn khng b ny [rung])

Chng trnh C: #include <16F84.h> #use delay(clock=20000000) #use_fast_io(A) #use_fast_io(B) void main() { int pattern=1; TD lp trnh C cho PIC vi CCS C trang 1

set_tris_a(0x01); /* Chn A0 l ng nhp */ set_tris_b(0x00); /* Port B xut */ while (1) { output_b(pattern); delay_ms(20); if (input(PIN_A0)==1) /* Rotate Left */ if (pattern != 0x80) pattern <<= 1; else pattern = 1; else /* Rotate Right */ if (pattern != 1) pattern >>= 1; else pattern = 0x80; } } TD 2: Mch m ln thp phn 2 k s vi xung nhp kch cnh xung S mch: (Gi s phm nhn khng b ny [rung] v LED 7 on c sn mch gii m)

Chng trnh C: #include <16F84.h> #use delay(clock=20000000) #use_fast_io(A) #use_fast_io(B) int bin2BCD(int bin) { // Chng trnh i t 1 s nh phn ra s BCD 2 k s, ch ng cho s nh phn ny c tr <= 99 int BCD; TD lp trnh C cho PIC vi CCS C trang 2

BCD = ((bin/10) << 4) + bin % 10; return BCD; } void main() { int counter=0,counter_BCD=0; set_tris_a(0x01); /* Pin A0 is Input port pin */ set_tris_b(0x00); /* Output Port B configuration*/ while (1) { output_b(counter_BCD); while(!input(PIN_A0)); // i cho n khi A0 = 1 while(input(PIN_A0)); // i cho n khi A0 = 0 pht hin cnh xung counter++; if (counter == 100) counter = 0; counter_BCD=bin2BCD(counter); } } BT: Ngi c th thit k b m BCD 3 k s hay 4 k s vi xung nhp kch cnh ln?? Sa li phn cng dng LED 7 on CA hay CC thng thng? TD 3: Mch m ln thp phn 2 k s vi xung nhp kch cnh xung (dng timer ca PIC) S mch: (Gi s phm nhn khng b ny [rung] v LED 7 on c sn mch gii m)

Chng trnh C: #include <16F84.h> #use delay(clock=20000000) TD lp trnh C cho PIC vi CCS C trang 3

#use_fast_io(A) #use_fast_io(B) int bin2BCD(int bin) { // Chng trnh i t 1 s nh phn ra s BCD 2 k s, ch ng cho s nh phn ny c tr <= 99 int BCD; BCD = ((bin/10) << 4) + bin % 10; return BCD; } void main() { int counter=0,counter_BCD=0; set_tris_a(0x10); /* Pin A4 (external Counter) is Input port pin */ set_tris_b(0x00); /* Output Port B configuration*/ setup_counters(RTCC_EXT_H_TO_L, RTCC_DIV_1); /* Set up Timer 0 */ set_timer0(0); /* Initial value of Counter */ while (1) { output_b(counter_BCD); counter=get_timer0(); if (counter == 100) { counter = 0; set_timer0(0); /* Initial value of Counter */ } counter_BCD=bin2BCD(counter); } } TD 4: To dng sng dng my trng thi Cch 1 dng bng Ta mun to dng sng tun hon c dng sau Port B: (mc 1 th LED sng chn )

T dng sng trn ta c th phn tch thnh my trng thi Moore vi thi gian tn ti ca 1 trng thi l 20ms v trng thi bt u l trng thi 0. Ta c th dng bng cha tr s ra tng ng vi mi trng thi. TD lp trnh C cho PIC vi CCS C trang 4

Ngi c t v phn cng ca mch cn thit k. Chng trnh C: #include <16F877.h> #use delay(clock=20000000) #use_fast_io(B) void main() { int state[5]={0x09, 0x01, 0x02, 0x0C, 0x04}; set_tris_b(0x00); // t cu hnh xut cho Port B while(1) { for (i = 0; i <5; i++) { output_b(state[i]); delay_ms(20); } } } BT: Ngi c th vit chng trnh to tn hiu iu khin n giao thng ti ng t? TD 5: To dng sng dng my trng thi Cch 2 dng switch case Lm li th d trn dng switch case ci t cc trng thi #include <16F877.h> #use delay(clock=20000000) #use_fast_io(B) void main() { int state=0; set_tris_b(0x00); // t cu hnh xut cho Port B while(1) TD lp trnh C cho PIC vi CCS C trang 5

{ switch(state){ case 0: state =1; output_b(0x09); break; case 1: state =2; output_b(0x01); break; case 2: state =3; output_b(0x02); break; case 3: state =4; output_b(0x0C); break; case 4: state =0; output_b(0x04); break; default: state =0; output_b(0x00); } // end of switch-case delay_ms(20); } // end of while } Ch : Phng php dng switch..case ci t my trng thi l cch tng qut, cn phng php bng cho cc bi ton n gin!

TD lp trnh C cho PIC vi CCS C trang 6

You might also like