BÀI TẬP VỀ PIC 16F877 pptx

4 361 3
BÀI TẬP VỀ PIC 16F877 pptx

Đang tải... (xem toàn văn)

Thông tin tài liệu

[BÀI TẬP VỀ PIC 16F877] loc.plsoft@gmail.com 1 1/ Chương trình dịch Led P2.7 – P2.0. CTC delay có thể tùy chỉnh, delay tối đa là 12,75s ORG 0030H MOV TMOD,#01H MOV A,#80H LAP: MOV P2,A CALL DELAY RR A SJMP LAP DELAY: MOV R7,0 LP: MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0 JNB TF0,$ INC R7 CLR TF0 CLR TR0 CJNE R7,#20,LP RET END 2. #include "16F877A.H" #use delay(clock=20000000) #use Fast_IO(A) #byte porta=0x05 #bit ra0=porta.0 int8 k; #bit b0=k.0 #bit b1=k.1 #bit b2=k.2 unsigned mang1[]={0, 1, 2, 3, 4, 5, 6, 7}; unsigned mang2[]={0, 1, 3, 2, 6, 7, 5, 4}; void main() { set_tris_A(255); int8 i; while(1) { for(i=0;i<8;i++) { if (ra0==0) k=mang1[i]; else k=mang2[i]; output_bit(PIN_B0,b0); [BÀI TẬP VỀ PIC 16F877] loc.plsoft@gmail.com 2 output_bit(PIN_B1,b1); output_bit(PIN_B2,b2); delay_ms(200); } } } 3. Thực hiện mạch logic #include "16F877A.H" #use delay(clock=20000000) #use Fast_IO(A) #byte porta=0x05 #bit ra0=porta.0 #bit ra1=porta.1 #bit ra2=porta.2 void main() { int1 a,b,c; set_tris_a(0b000000111); while(1) { a=~(((~ra0) | ra1) & (~ra2)); b=~((~ra2) & ra1); c=~(a^b); output_bit(PIN_A3,c); } } 4. Dịch Led 2 chiều !!! #include "16F877A.H" #use delay(clock=20000000) #use Fast_IO(D) #byte portd=0x08 void main() { int8 i,led=1; set_tris_d(0); [BÀI TẬP VỀ PIC 16F877] loc.plsoft@gmail.com 3 while(1) { for(i=1;i<15;i++) { portd=led; delay_ms(100); if (i<8) led=led<<1; else led=led>>1; } } } 5. Tạo sóng có điều kiện đầu vào ở RB0 #include "16F877A.H" #use delay(clock=20000000) #use Fast_IO(B) #byte portB=0x06 #bit RB0=portB.0 void main() { set_tris_B(0x00000001); while(1) { if (RB0==0) { output_high(PIN_B6); delay_us(125); output_low(PIN_B6); delay_us(125); } else { output_high(PIN_B7); delay_ms(10); output_low(PIN_B7); delay_ms(10); } } } [BÀI TẬP VỀ PIC 16F877] loc.plsoft@gmail.com 4 6. Đếm cạnh xuống, giải mã BCD cho vô 2 Led 7 đoạn xuất cùng 1 port #include "16F877A.H" #use delay(clock=20000000) #use Fast_IO(B) #byte portb=0x06 void main() { int8 count=0,a,b; set_tris_B(0); set_tris_A(1); while(1) { b= ((count/10)<<4) + (count % 10); portb=b; while(!input(PIN_A0)); while(input(PIN_A0)); count=count+1; if (count==100) count=0; } } ** Thuật toán phát hiện cạnh xuống: while(!input(PIN_A0)); while(input(PIN_A0)); ** Thuật toán phát hiện cạnh lên: while(input(PIN_A0)); while(!input(PIN_A0)); . output_bit(PIN_B0,b0); [BÀI TẬP VỀ PIC 16F877] loc.plsoft@gmail.com 2 output_bit(PIN_B1,b1); output_bit(PIN_B2,b2); delay_ms(200); } } } 3. Thực hiện mạch logic #include "16F877A.H". !!! #include "16F877A.H" #use delay(clock=20000000) #use Fast_IO(D) #byte portd=0x08 void main() { int8 i,led=1; set_tris_d(0); [BÀI TẬP VỀ PIC 16F877] loc.plsoft@gmail.com. delay_ms(10); } } } [BÀI TẬP VỀ PIC 16F877] loc.plsoft@gmail.com 4 6. Đếm cạnh xuống, giải mã BCD cho vô 2 Led 7 đoạn xuất cùng 1 port #include "16F877A.H" #use delay(clock=20000000)

Ngày đăng: 27/07/2014, 06:21

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan