![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#1 |
Nhập môn đệ tử
Tham gia ngày: Mar 2010
Bài gửi: 10
: |
![]() Em đang làm quen với PIC này.ai có mạch vs code đúng send cho em để em nghiên cứu
mong các sư huynh chỉ giáo.thanks! |
![]() |
![]() |
![]() |
#2 | |
Đệ tử 1 túi
Tham gia ngày: Feb 2010
Bài gửi: 15
: |
Trích:
#include <16f877A.h> #fuses NOWDT,PUT,HS,NOPROTECT,NOLVP #use delay(clock=4000000) #use fast_io(b) #use fast_io(d) byte const ma7doan[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0}; void hienthi(int so) { int hc,hdv; hc=so/10; hdv=so%10; //hien thi so hang chuc output_low(pin_a4);//cho chan a4 xuong muc thap--->>>qua transitor(PNP)--->>>>tich cuc led hang chuc output_high(pin_a5);//cho chan a4 len muc cao--->>>qua transitor(PNP)--->>>>khoa led hang don vi output_b(ma7doan[hc]);//hien thi so hangf chuc da chuyen doi BCD delay_ms(100);//thay doi tuy theo ban chon thach anh //hien thi so hang don vi output_high(pin_a4); output_low(pin_a5); output_b(ma7doan[hdv]); delay_ms(100); } void main() { int8 count=0; int8 i; set_tris_b(0x00); //set_tris_a(0x00); while(1) { for(i=0;i<2;i++)//vong for de lap hien thi, de tao thoi` gian tre { hienthi(count); count++; if(count==10) count=0; //reset lai } } } |
|
![]() |
![]() |
![]() |
#3 |
Nhập môn đệ tử
Tham gia ngày: Mar 2010
Bài gửi: 10
: |
![]() Bác nào có code vs mạch dùng ngắt timer up lên cho mình nghiên cứu với!Chưa biết nhiều về phần này!thanks
thay đổi nội dung bởi: hunter800, 18-03-2010 lúc 05:44 PM. |
![]() |
![]() |
![]() |
#4 |
Nhập môn đệ tử
Tham gia ngày: Mar 2010
Bài gửi: 4
: |
chao huynh! minh moi lam quen voi Pic, chuong trinh minh dang hoc la MPLAB IDE C18. khong biet huynh co the chi dan them cho minh ve phan cung cua pic 18f4520, cach su dung MPLAB IDE C18 ko? Cam on!
|
![]() |
![]() |
![]() |
#5 | |
Đệ tử 1 túi
Tham gia ngày: Feb 2010
Bài gửi: 15
: |
Trích:
Cũng giống như ví dụ sau: Trong một lớp học, khi mọi người chăm chú lắng nghe cô giáo giảng bài, thì bổng nhiên có một người có điện thoại, xem như cô giáo dạy và lớp học là VDk và công việc mà VDk phải làm, việc có một hs có điện thoại xem như ngắt timer xãy ra. Nghĩa là lớp học vẫn học bình thường khi anh hs đó ra nghe dt, không phụ thuộc vào anh ta. Bạn cứ hiểu nôm na là vậy. Ngắt timer dùng để tạo thời gian, mà hoàn toàn khác với hàm delay, vì khi delay thì cả vdk đều dừng làm việc. Ngắt timer là vậy. Về tài liệu bạn có thể tham khảo nhiều trên mạng, tôi có bài mẫu tôi mới viết về ngắt timer 0 hồi năm ngoái, bạn có thể tham khảo. #include <16F877A.h> #include <def_877a.h> #fuses NOWDT,PUT,XT,NOPROTECT #use delay(clock=4000000) #byte PORTB = 0x06 int16 dem=0; //Chung trinh nhay led hao quang void ht() {int o; for(o=1;o<=3;o++) { int8 out,i,j,a,n; //while(1) //{ a=0; out=0; output_d(out); delay_ms(100); for(i=0;i<=7;i=i+1) {n=0x80; for(j=0;j<=8-i;j=j+1) {out=n|a; output_d(out); delay_ms(50); n=n>>1; } a=a<<1; a=a+1; } } } #int_timer0//ngat timer0 nhay led portc, khong duoc dung ham delay trong nay void interrupt_timer0() { set_timer0(6); ++dem; if(dem==0) { output_c(0x00); } if(dem==2000) { output_c(0b00000001); } else if(dem==4000) { output_c(0b00000011); } else if(dem==6000) { output_c(0b00000111); } else if(dem==8000) { output_c(0b00001111); } else if(dem==10000) { output_c(0b00011111); } else if(dem==12000) { output_c(0b00111111); } else if(dem==14000) { output_c(0b01111111); } else if(dem==16000) { output_c(0b11111111); dem=0; } } void main(void) { int k; set_tris_b(0); set_tris_c(0x00); portc=0x00; enable_interrupts(int_timer0);//cho phep ngat timer0 setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2); //khai bao timer0 bo dinh thoi, ty le chia tan 2 enable_interrupts(global); set_timer0(6);// T_dinhthi = 2*(256 - 6)*1us = 500us while(true) { ht(); } } Thân, thay đổi nội dung bởi: trai_xq, 18-03-2010 lúc 11:17 PM. |
|
![]() |
![]() |
![]() |
#6 |
Nhập môn đệ tử
Tham gia ngày: Apr 2011
Bài gửi: 1
: |
có bác nào viết điều khiển pic bằng hợp ngữ ko giúp em cái ct này với (đếm 0 lên 60)
PROCESSOR 16F877A #INCLUDE <P16F877A.INC> ORG 0000H DEM2 EQU 25H DEM EQU 20H DEM1 EQU 23H GIAY1 EQU 21H GIAY2 EQU 22H BCF STATUS,6 BSF STATUS,5 CLRF TRISB BCF TRISA,0 BCF TRISA,1 BCF STATUS,5 MOVLW B'111111' MOVWF PORTA CLRF PORTB MAIN MOVLW D'0' MOVWF GIAY1 MOVLW D'0' MOVWF GIAY2 MOVLW D'0' MOVWF DEM HOATDONG BSF PORTA,0 BCF PORTA,1 MOVF GIAY1 CALL BANG MOVWF PORTB CALL DELAY BCF PORTA,0 BSF PORTA,1 MOVF GIAY2 CALL BANG MOVWF PORTB CALL DELAY INCF DEM,1 MOVLW D'50' XORWF DEM,0 BTFSS STATUS,2 GOTO HOATDONG MOVLW D'9' XORWF GIAY2,0 BTFSS STATUS,2 GOTO LENH1 GOTO LENH2 BANG ADDWF PCL,1 RETLW B'11000000' RETLW B'11111001' RETLW B'10100100' RETLW B'10110000' RETLW B'10011001' RETLW B'10010010' RETLW B'10000010' RETLW B'11111000' RETLW B'10000000' RETLW B'10010000' LENH1 INCF GIAY2 GOTO HOATDONG LENH2 MOVLW D'0' MOVWF GIAY2 MOVLW D'6' XORWF GIAY1,0 BTFSS STATUS,2 GOTO LENH3 GOTO MAIN LENH3 INCF GIAY1 GOTO HOATDONG DELAY MOVLW D'50' MOVWF DEM1 LOOP DECFSZ DEM1 GOTO LOOP1 GOTO THOAT LOOP1 MOVLW D'100' MOVWF DEM2 LOOP2 DECFSZ DEM2 GOTO LOOP2 GOTO LOOP THOAT NOP RETURN END em viết mà ko biết sai chỗ nào, bác nào pro giúp em tý nha |
![]() |
![]() |
![]() |
#7 |
Nhập môn đệ tử
Tham gia ngày: Nov 2011
Bài gửi: 1
: |
minh viet bang hop ngu tu o den 99 do,
|
![]() |
![]() |
![]() |
#8 | |
Đệ tử 3 túi
Tham gia ngày: Nov 2011
Bài gửi: 58
: |
Trích:
![]() ah cái code mô phỏng chắc được còn nạp pic thì chưa chắc chạy vì bạn thiếu 1 dòng : __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF vui quá gặp được đồng minh ^^ |
|
![]() |
![]() |
![]() |
|
|