Professional Documents
Culture Documents
Cau1,2 LUUDO
Cau1,2 LUUDO
- Ở chương trình chính, ngoài các lệnh khởi tạo với TRIS, ADCON1, cần viết:
+ Lệnh làm cho INTxIE=1 (x=0,1,2 tùy theo đề bài yêu cầu nối KEY với chân INT0,1 hoặc 2)
+ Lệnh làm cho INTEDGx=0 nếu thiết kế mạch điện gây ngắt bằng sườn âm hoặc INTEDGx=1 nếu
thiết kế mạch điện gây ngắt bằng sườn dương;
Câu 1:
Thuật toán:
CTC
Begin
CTCPVN
Khởi tạo:
RC2,RC4: Ra số; RB1: vào số Xóa cờ ngắt (INT1IF)
Cho phép ngắt INT1 LED1 tắt
ĐK kết S
thúc?
End
Mạch điện:
U1
2 15 D1
3
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
16
R2
RA1/AN1/C2IN- RC1/T1OSI/CCP2B
4 17
5
RA2/AN2/C2IN+/VREF-/CVREF RC2/CCP1/P1A
18
560 D2
R1 6
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
23
R3 LED-BLUE
RA4/T0CKI/C1OUT RC4/SDI/SDA
7 24
10k RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO 560
14 25 LED-BLUE
RA6/OSC2/CLKO RC6/TX/CK
13 26
RA7/OSC1/CLKI RC7/RX/DT
33 19
RB0/AN12/FLT0/INT0 RD0/PSP0
34 20
RB1/AN10/INT1 RD1/PSP1
35 21
RB2/AN8/INT2 RD2/PSP2
36 22
RB3/AN9/CCP2A RD3/PSP3
37 27
RB4/KBI0/AN11 RD4/PSP4
38 28
RB5/KBI1/PGM RD5/PSP5/P1B
39 29
RB6/KBI2/PGC RD6/PSP6/P1C
40 30
RB7/KBI3/PGD RD7/PSP7/P1D
8
RE0/RD/AN5
9
RE1/WR/AN6
10
RE2/CS/AN7
1
RE3/MCLR/VPP
PIC18F4520
Chương trình:
#include<p18f4520.h>
#include<stdio.h>
#include<delays.h>
//c?u hình
void ngat_ngoai(void);
//Ði?m d?t chuong trình ph?c v? ng?t có m?c uu tiên cao (vector 0008H)
// N?u là chuong trình ph?c v? ng?t có m?c uu tiên th?p (vector 0018H):
void ngat_cao(void)
#pragma code
void ngat_ngoai(void)
unsigned int i;
LED1=0;
LED2=1; Delay10KTCYx(100);
LED2=0; Delay10KTCYx(100);
void main()
ADCON1=0x0f; // vao ra so
TRISC=0b00000000;
INTCONbits.GIE=1;
LED2=0;
while(1)
Delay10KTCYx(100);
Delay10KTCYx(100);
Câu 2:
CTC
Begin
CTCPVN
Đ
Về CTC
End
Chương trình:
#include<p18f4520.h>
#include<stdio.h>
#include<delays.h>
//c?u hình
void ngat_ngoai(void);
//Ði?m d?t chuong trình ph?c v? ng?t có m?c uu tiên cao (vector 0008H)
void ngat_cao(void)
#pragma code
void ngat_ngoai(void)
INTCONbits.INT0IF=0;
x=x+1;
void main()
ADCON1=0x0F;
TRISB=0b00000111;
TRISC=0b00000000;
INTCONbits.GIE=1;
INTCONbits.INT0IE=1;
INTCON2bits.INTEDG0=0;
while(1)
LED4=1; Delay10KTCYx(100);
LED4=0; Delay10KTCYx(100);