NỘI DUNG ƠN TẬP
1. Xử lý phím nhấn đơn
#include <16F877A.h>
#FUSES NOWDT, HS, NOPUT, PROTECT, NODEBUG, NOBROWNOUT, NOLVP
#use delay(clock=8000000)
#define
D1
PIN_B4
#define
SW1
PIN_C0
#define
SW2
PIN_C1
//=========================================================
void main()
{INT8 SW=0;
while(TRUE)
{
if(!input(SW1)) SW = 1;
if(!input(SW2)) SW = 2;
switch(SW)
{case 1:{output_high(D1); delay_ms(300); SW=0;break;}
case 2:{output_low(D1); delay_ms(300); SW=0;break;}}
}
}//end main
2. Điều khiển LED đơn
CONST int8 a[9] = {trạng thái điều khiển};
Void main()
{For (int8 i = 0; i < số lần lặp; i++)
{ for (int8 j = 0; j < 9; j++) {output_x(a[j]); delay_ms(thời gian);} }
}
3. Quét 4 LED 7 đoạn không dùng ngắt
#include <16F877A.h>
#FUSES NOWDT, HS, NOPUT, PROTECT, NODEBUG, NOBROWNOUT,
NOLVP
#use delay(clock=8000000) // Tần số thạch anh dùng trong hệ thống
//-------CHƢƠNG TRÌNH CHÍNH--------Void main()
{
While (TRUE){
Output_d(0xff); Output_b(“H”7s); output_low(PIN_D3); delay_ms(5);
Output_d(0xff); Output_b(“E”7s); output_low(PIN_D2); delay_ms(5);
Output_d(0xff); Output_b(“L”7s); output_low(PIN_D1); delay_ms(5);
Output_d(0xff); Output_b(“P”7s); output_low(PIN_D0); delay_ms(5);}
}
4. Chƣơng trình con delay dùng timer 0 và timer 1
(Chƣơng trình con delay 250ms sử dụng timer 0, và :
Setup_timer_0(RTCC_DIV_4|RTCC_INTERNAL)
B1. Tính số xung cần đếm = delay/T ; // T = 1/f; f = (Fosc/4)/n; delay (uS)
B2. Viết chƣơng trình con
Void delay( )
{setup_timer_0/1(…….);// đề bài
For(int16 i=0;i
{set_timer0/1(0);
While(get_timer0/1( )
}
}
5. Quét 4 LED 7 đoạn dùng ngắt timer 0 hoặc timer 1
#INT_TIMER1
void qled()
{
Output_d(0xff);// tắt các led
Output_b(led1); output_low(PIN_D3); delay_ms(3);// “H”
Output_d(0xff);// tắt các led
Output_b(led2); output_low(PIN_D2); delay_ms(3); // “E”
Output_d(0xff);// tắt các led
Output_b(led3); output_low(PIN_D1); delay_ms(3);// “L”
Output_d(0xff);// tắt các led
Output_b(led4); output_low(PIN_D0); delay_ms(3);// “P”
}
//-------CHUONG TRÌNH CHÍNH--------Void main()
{
enable_interrupts(GLOBAL);
enable_interrupts(INT_TIMER1);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
led1 = “F”; led2 = “I”; led3 = “L”;led4 = “L”;
delay_ms(15000);
led1 = “S”; led2 = “t”; led3 = “O”;led4 = “P”;;
while(1);
}
6. Hiển thị thông tin trên LCD
#include <lcd.c>
Void main()
{lcd_init();
Lcd_gotoxy(x,y);
Printf(lcd_putc,”
”);//printf(lcd_putc,”%u”,biến)
}
7. Quét phím dùng ngắt timer 0 hoặc timer 1
// Chƣơng trình ngắt
#INT_RTCC
void ktra_sw()
{ if (!input(SW1)) SW=1;
if (!input(SW2)) SW=2;
}
//-------CHƢƠNG TRÌNH CHÍNH--------Void main()
{ enable_interrupts(GLOBAL);// cho phép ngắt
enable_interrupts(INT_RTCC);// cho phép ngắt timer 0
setup_timer_0(RTCC_DIV_4|RTCC_INTERNAL);// cấu hình timer 0
while(TRUE)
{switch(SW)
{case 1:{……;break;}// nhấn phím SW1 thì…
Case 2:{…..;break;} // nhấn phím SW2 thì…
}
}
}
8. ADC (đo nhiệt độ hiển thị LED 7 đoạn và LCD)
9. PWM