PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 17-03-2010, 07:03 PM   #1
hunter800
Nhập môn đệ tử
 
Tham gia ngày: Mar 2010
Bài gửi: 10
:
Unhappy mạch đếm từ 00 dến 99 dùng PIC 16f877a

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!
hunter800 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-03-2010, 08:06 AM   #2
trai_xq
Đệ tử 1 túi
 
Tham gia ngày: Feb 2010
Bài gửi: 15
:
Trích:
Nguyên văn bởi hunter800 View Post
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!
đây là đoạn chương trình quét hai led 7 từ 0 đến 99 và reset lại. Nếu bạn chưa hiểu về sơ đồ thì có thể liên hệ với tôi qua phanthuongtbqn@gmail.com. Tôi sẽ giúp bạn.
#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
}
}
}
trai_xq vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-03-2010, 05:22 PM   #3
hunter800
Nhập môn đệ tử
 
Tham gia ngày: Mar 2010
Bài gửi: 10
:
Unhappy

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.
hunter800 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-03-2010, 05:55 PM   #4
thuongcdtspkt
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!
thuongcdtspkt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-03-2010, 10:49 PM   #5
trai_xq
Đệ tử 1 túi
 
Tham gia ngày: Feb 2010
Bài gửi: 15
:
Trích:
Nguyên văn bởi hunter800 View Post
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
ngắt timer là loại ngắt mà khi nó xãy ra thì nó sẻ tự động tính thời gian, mà thời gian nó tính không phụ thuộc vào quá trình làm việc của VDK.
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.
trai_xq vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-10-2011, 08:58 PM   #6
phu_cddt09a
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
phu_cddt09a vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-11-2011, 11:37 PM   #7
linhpro4981vip
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,
File Kèm Theo
File Type: txt BAIDEMTHUAN99.txt (1.4 KB, 22 lần tải)
linhpro4981vip vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-11-2011, 02:02 AM   #8
ladykiller
Đệ tử 3 túi
 
Tham gia ngày: Nov 2011
Bài gửi: 58
:
Trích:
Nguyên văn bởi phu_cddt09a View Post
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
Tình hình là nhìn đoạn code em có thể đoán được bạn này học ở trường Cao Thắng
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 ^^
ladykiller vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 02:13 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam