HTPIC - các chương trình cho PIC6F877A
Tôi đã viết các bài viết ở Điện tử Việt Nam tại luồng này:
http://dientuvietnam.net/forums/show...4688#post14688 Ngôn ngữ là: HTPIC Có lẽ bài toán nháy led là bài toán đơn giản và tạo hứng thú cho các bạn học vi điều khiển. Tôi xin mạn phép up chương trình nháy led đơn giản và xin các bạn cho ý kiến là liệu có thể tối ưu chương trình này đến mức nào nữa? Miêu tả phần cứng: nối các chân của PORTD với các 8led. Các chân còn lại của led nối với một con trở hạn dòng 330Ohm, sau đó nối với GND. Đây là sơ đồ nguyên lý: Phần mềm: dùng HTPIC. Hiện tuợng: các bạn chạy thử xem thế nào :D Giải pháp: có 2 giải pháp là dùng ngắt hoặc dùng delay. Chương trình đầu là dùng delay: Sau đây là chương trình: Code:
#include<pic.h> File gửi kèm có 2 file: PJ1.c và PJ2.c . PJ1.C là chương trình dùng delay, PJ2 là dùng ngắt. Xin mọi người cho ý kiến. |
Đây là chương trình dùng ngắt timer0.
Code:
#include<pic.h> Trong chương trình này mình sau 500 ngắt timer0 thì mới quét led1 lần. Ngoài ra cũng dùng thêm biến static i để biết được đang quét led nào. Do đó dùng ngắt sẽ tiện hơn nhiều. Và dùng đếm sự kiện ngắt thì ta có thể không cần dùng Prescaler với tỉ lệ quá cao, tránh được sai số nhiều. Không biết mọi người có ý kiến thế nào? |
Giải mã LED7 thanh
1 Attachment(s)
Tiếp theo tôi xin đưa cho mọi người xem một chương trình của tui không biết liệu nó đã tối ưu chưa? Đã hiệu quả chưa?
Mô tả phần cứng: có 4 led 7 thanh. Các chân của PORTD 7->1 nối với các chân a->g của led7. Các chân RA5 đến RA3 nối vào cực bazơ của con uA1015 lần lượt nối với các cực Anot của 4 led. Đây là sch: vì to quá nên cắt thành 2 nhìn cho rõ: http://i36.photobucket.com/albums/e4.../PVN_00012.gif http://i36.photobucket.com/albums/e4.../PVN_00013.gif Hình 2: Quét led 7 thanh. Chương trình này lấy phần giải mã của anh 4MD. chương trình của anh ấy dùng cả delay. Nhưng tôi nghĩ là khi dùng ngắt rùi thì dùng delay làm gì cho phí. Do đó việc dùng ngắt làm cho ta đỡ tốn thời gian làm những việc linh tinh. Các bạn cho ý kiến về giải thuật này. Code:
#include<pic.h> Chương trình của mình có cái hay là khi bạn vừa dùng ngắt Timer0 để quét led bạn vừa có thể tận dụng nó để làm việc khác nữa như đếm số lần quét hoặc là delay để làm cái gì đó. Cái này giống kiểu tiết kiệm chân vi điều khiển vậy :D. Dưới đây có file gửi kèm là 3 file .c của 3 bài trên. Chúc các bạn thành công. |
Cho tớ hỏi tí!
Bác dùng phần mềm gì để vẽ mạch vậy?Có free ở đâu không ?Cảm ơn! |
Trích:
Bởi hàm này hay phải gọi đến trong CT quét LED 7 hay nhièu CT khác. |
OK, mình xin thay đoạn chương trình đó bằng cách gọi hàm:
Code:
Convert(a,4,number); Code:
// ========== Ham chuyen doi Đoạn code đã được test bằng phần cứng.Đảm bảo thay thế đúng. Mình xin đưa lại code mới: Code:
/*;======================================================== Chúc các bạn thành công. |
hay. Mình rất khoái lập trình C. Hồi trước làm AT toàn xài ASM, từ khi biết keil, toàn xài cái này thôi, chỉ khi nào có yêu cầu của khách mình mới viết bằng ASM. Viết bằng C cho nó nhanh. Nhưng minh vẫn thấy viết bằng ASM là nghệ thuật hơn cả. Tuy no hơi dài nhưng phải nói là hay, khi ta giải quyết đc những thuật toán đk...phải nói là hay...
Thực tế thì nên dùng C |
USART - truyền dữ liệu nối tiếp với PC
Đây là chương trình khi PC gửi dữ liệu đến PIC thì PIC sẽ phản hồi lại kí tự mà nó đã nhận được. Là một phần trong bài tập lớn của tôi nên tôi sẽ post dần lên cho anh em tham khảo và cho ý kiến về độ tối ưu của chương trình.
Code:
/*======================================================== Chương trình đã được test và chạy ngon lành. Chúc các bạn thành công. |
Timer1 đếm xung hiển thị 4 Led7 đoạn
Có lẽ chương trình hiển thị số lên led7 đoạn đã được mịnh viết bên dientuvietnam.net nên sẽ không viết lại nữa nha. Nhưng máy mình không vào được site này. Nên đành post lên bên này vậy.
Sau đây là chương trình đếm xung từ chân RC1/T1OSI/CCP2 để hiển thị lên 4led 7 thanh. Một chương trình cũng rất đơn giản.Xin mời các bạn xem và cho ý kiến về chương trình này: Code:
/*;======================================================== |
Điều chế PWM và đếm xung hiển thị 4Led
Đây là chương trình điều chế xung PWM trên chân RC2/CCP1 và đếm xung từ chân RC1/T1OSI/CCP2 hiển thị lên 4led7 thanh. Mình dùng Encoder 100 lỗ mượn của bạn :D.
Code:
#include<pic.h> |
Giao tiếp USART điều khiển động cơ , thiết bị ngoại vi
Chương trình sau nhận lệnh từ PC truyền xuống. Các bạn dựa vào cấu trúc chương trình có thể tự lập cho mình chương trình để làm. Đây là một phần nhỏ trong chương trình thiết kế bộ PID điều khiển động cơ một chiều 12V của tôi:
Code:
/*======================================================== Chúc mọi người thành công. |
Mình có viết một chương trình cho PIC6F88 bằng HT-PIC 805PL2, không hiểu sao trình biên dịch lại bắt đầu chương trình tại địa chỉ 07C0h chứ không phải từ 0000h? Mong các bác chỉ giúp em nhé.
1: #include <pic.h> 2: __CONFIG(INTIO & PWRTEN & BORDIS & WDTDIS & MCLRDIS & LVPDIS ); 3: 4: 5: 6: #define R1 0x20; 7: #define R2 0x21; 8: void delayms(int n); 9: void init (void); 10: 11: void delayms(int n) 12: { 13: while(n--) 7C0 2FC6 GOTO 0x7c6 7C6 1283 BCF 0x3, 0x5 7C7 1303 BCF 0x3, 0x6 7C8 0820 MOVF 0x20, W 7C9 1903 BTFSC 0x3, 0x2 7CA 03A1 DECF 0x21, F 7CB 03A0 DECF 0x20, F |
Chào các bác.Em mới học về Pic.Mong các bác chỉ giáo
Em dùng Htpic. Em viết 1 chương trình đơn giản sử dụng timer0. Nhưng chả hiểu tại sao thời gian delay ko chính xác(em mô phỏng bằng proteus). Em delay 1 giây mà mô phỏng chạy những 15 giây(sai số lớn quá) Mà ko hiểu tại sao lệnh while(1) lại ko lặp lại.Khi đèn chạy được 1 chu kỳ thì nó tắt luôn chứ ko lặp lại. các bác xem giúp em với Code:
|
Hình như Picvietnam ko mặn mà với Htpic lắm.
Em sang bên dientuvietnam hỏi vậy |
sao minh chạy thu chuong trình đơn giản cho một led tắt mot giây sáng 1 giay tải về nạp pic 877a chạy thử mà không dược nhân dịp cho minh hỏi co chuong trình nào viết ASM rồi chuyển sang C còn C chuyển qua ASM minh biết rồi tại vì mình mới học pic minh không dùng ASM mà đi thẳng vào viết C cho pic trên diển dàn thì bày ASM nhiều
|
Trích:
Thân, |
Các bác giúp em với!!!
EM đã cài MPLAB 7.42 và HT PIC 9.50,các bác bảo HT PIC tự nhúng vào MPLAB khi cài nó phải ko? Bây giờ em soạn file .C trong MPLAB,em muốn biên dịch nó sang file .HẼ cũng trong môi trường MPLAB(sử dụng HT PIC để biên dịch ) thì phải làm cách nào? Mong các bác trả lời sớm nha EM cảm ơn nhiều!!!!!!!! |
Bạn muốn biên dịch file .c của bạn thì bạn phải gắn nó vào trong một Project nhé.
Đầu tiên bạn tạo một Project rùi Add file đó vào rùi biên dịch, thế là xong. Mình cài bản HT PIC 9.50 nhưng không biên dịch được và báo lỗi ở file PICC.exe nên đành quay lại dùng bản 8.05PL2. Bạn chỉ cần cài bản 8.05 dùng ngon lành. http://www.picvietnam.com/forum//showthread.php?t=31 Chúc bạn thành công. |
Quét led7 thanh.
Sau đây mình copy một số bài bên dientuvietnam.net sang đây và trả lời từng câu hỏi mà các bạn hỏi nhé.
Rảnh rỗi ngồi viết chương trình hiển thị led7 thanh chơi chơi. Ở đây em chỉ dùng 1 led thôi cho đơn giản. Còn việc quét led đã viết ở các bài trước rùi :D. Đây là sơ đồ nguyên lý: Tiếp theo là chương trình bằng HTPIC: Code:
#include<pic.h> Code:
if (T0IF & T0IE){ Code:
if (T0IF) Nếu lúc đó ta đã disable ngắt timer0 mà giờ nó lại thực hiện chương trình trong timer0 thì chương trình chạy quá sai rùi. Đây là chú ý của anh BA :D. Nếu không nhận ra thì có khi sai nhiều đó :D. Khi chúng ta viết chương trình ngắt trong ngắt thì sẽ thấy điều này :D. Chúc các bạn thành công. |
Chuyển đổi ADC.
Bài tiếp theo tôi đã làm, đã test rồi nhưng hôm này con PIC nó bị "ốm" nên không test được.
Đã vậy 3 ngày không được vào diễn đàn vì bọn hack DDOS thấy nhớ quá. Nên vào một cái là up ngay chương trình về ADC cho bà con xem :D. Bạn nào test luôn lại cái và báo lại kết quả cho mình luôn nha. Phần cứng: Biến trở 10k mắc vào AN0. Đo áp biến đổi ADC hiển thị lên 4 con led7 Đây là schematic: http://i36.photobucket.com/albums/e4.../PVN_00017.gif Loại PIC: 16F877Ahttp://i36.photobucket.com/albums/e4.../PVN_00018.gif Hình 3: Chuyển đổi ADC, hiển thị LED7 segment. Thuật giải là cứ sau mỗi thời gian trích mẫu thì lại bắt đầu chuyển đổi ADC luôn. Khi có ngắt AD thì lưu giá trị vào số number. Còn quét led thì liên tục quét. Ở đây mình tạo ra một timer0 1ms. Thời gian trích mẫu AD = 4ms x counter2. Mình edit lại đây :D Source code: Code:
#include<pic.h> Chúc mọi người thành công. Mai viết tiếp :D |
Điều chế PWM.
http://dientuvietnam.net/forums/show...?t=1406&page=4
Bài viết số 39. Theo datasheet PIC687XA tại trang 67,68 về PWM, chúng ta dễ dàng có thể viết được chương trình điều chế độ rộng xung (Pulse Width Modulation). Chương trình dưới đây điều chế một xung với tần số 15KHz và có độ rộng xung tăng dần từ 0-> 100% theo bước tăng là 10% sau mỗi khoảng thời gian 1s. Code:
PWM Period = [ PR2 +1 ] x 4 x Tosc x (TMR2 Prescaler Value) Code:
/*;======================================================== Ngẫu hứng đêm khuya viết tí. Sáng mai dạy viết tiếp. Chúc anh em ngủ ngon :D. |
Tối ưu các chương trình,chương trình giao tiếp USART
http://dientuvietnam.net/forums/show...?t=1406&page=5
Bài số 45. Giờ mình xin đưa ra các chương trình mà mình tối ưu dần dần và cảm thấy nó dễ hiểu. Mình xin đưa ra cho các bạn xem và cho ý kiến. Mình sẽ tối ưu từng chương trình một. Đầu tiên là chương trình dùng giao tiếp USART, trong chương trình này mình dùng thư viện stdio.h có hàm printf(). Tuy nhiên bạn phải định nghĩa hàm putch(..) thì mới sử dụng được hàm này. Hàm printf( ) sẽ truyền xâu dữ liệu theo định dạng C ra cổng nối tiếp USART. Code:
/*======================================================== Chúc các bạn thành công. Ngủ cái đã. Mai còn phải ôn thi :D. |
Lấy đặc tính h(t) của động cơ.
http://dientuvietnam.net/forums/show...?t=1406&page=5
bài 46. Chào các bạn. Tôi đã làm xong bài tập lớn môn lý thuyết điều khiển tự động là thiết kế bộ điều khiển PID trên nền PIC.Bây giờ tôi xin đưa các đoạn code của bài tập lớn của tôi. Đầu tiên là công việc là lấy đặc tính đáp ứng h(t) của động cơ để từ đó tính toán các tham số Kp, Ki, Kd. Đây là bước tính toán thô các giá trị của bộ PID sau đó mình mới tinh chỉnh lại sau ở một chương trình khác. Vi điều khiển ứng dụng: PIC6F877A Ngôn ngữ lập trình: HTPIC Trong bài này tôi mục đích làm như sau: khi ấn "P" trên giao diện trên PC hay nói cách khác truyền kí tự P xuống chip thì nó nhận lệnh và cho động cơ hoạt động. Tôi điều chế một xung 15KHZ, ở đây cho độ rộng 100% luôn. Và từ đó liên tục đọc 500 giá trị và truyền lên PC. Thời gian trích mẫu của hệ thống là 10ms. Tôi truyền số xung đo được lên PC, từ số liệu này sẽ tính toán ra tốc độ thực và vẽ được hàm h(t) của đối tượng. Tôi dùng chương trình Terminal (do lười nên không viết chương trình trên PC riêng) và lấy dữ liệu và cho vào Matlab để nội suy ra hàm quá độ h(t) . Tôi định viết một chương trình bằng Matlab nhận giao tiếp RS232 tính toán và đưa ra đồ thị luôn. Nhưng phải chờ tí đã, dạo này ôn thi nên hơi lười làm. Chương trình Terminal và giao tiếp RS232 các bạn có thể xem tại http://www.picvietnam.com/forum/show...p?t=274&page=2 Code chương trình trên Matlab: dùng nội suy Cubic Code:
hold off; Code:
#include<pic.h> Hình bị mất, mình tìm lại upload sau:D. Chúc các bạn thành công. |
Trích:
Tiếp, mô phỏng bằng Poteus, quét led hiển thị không chính xác bạn ạ. Nên thử bằng Board thật nhé, xem có vấn đề gì không. Trong hàm delay của bạn, là kiểu |
Chào các bạn.
Để có thể viết được chương trình bằng HTPIC cho hợp lý và tuân theo đúng trình dịch HTPIC, các bạn nên download manual của nó PICC Manual Tài liệu này rất hay (của www.htsoft.com). Chúc các bạn thành công. |
Chào các bạn.
Mình thấy quyển manual complier của bọn HTsoft cũng khá hay và đầy đủ chú ý. Do đó, thấy cái gì hay hay mình viết rùi các bạn góp ý kiến nhá. Có lẽ mình cũng nên lập thư viện cho HTPIC chứ nhỉ?? Thấy anh em dùng CCS hoạt động kinh quá :D. Đầu tiên là cách khai báo một biến đặt tại một địa chỉ nhất định trong RAM. Ví dụ, muốn Portvar là biến đặt tại địa chỉ 0x06 thì trong ASM ta dùng lệnh sau: Code:
_Portvar EQU 06h Trong HTPIC các bạn khai báo như sau: Code:
volatile unsigned char Portvar @ 0x06; Chúc các bạn thành công. |
Thư viện LCD 16x2 8bit mode.
Mình xin upload thư viện viết cho LCD, ở đây mình dùng 8 bit mode cho LCD 2 line x 16 colum.
Code:
// LCD.h Các bước thực hiện: - Khởi tạo LCD dùng lệnh: LCD_Init(); - Thao tác ghi đọc bình thường, chú ý nhất là các hàm: LCD_gotoXY, LCD_PrString, LCD_PrChar, LCD_Command. Tiếp theo là file LCD.c là file thực hiện: Code:
//LCD.c Các bạn có thể mô phỏng bằng Proteus chạy rất ok. Lúc nào gửi tiếp mấy cái đã test. Chúc các bạn thành công. |
chào các anh! em mới học pic hà! khi em cài MPlab 7.52 roi ccs c, thêm pluginmp6 nữa nhưng khi khởi động chương trình Mplab lên thì báo lổi
Project Manager's initialization failed: At least the MPASM toolsuite plugin or AMS30 toosuite plugin must be installeed.(MPLAB may be to be reintalled) em không biết lổi trên và cách khắc phục như thế nào nhờ các anh chỉ bảo, em muốn viết 1 chương trình cho pic bằng c ma cả tháng rồi mò cài chương trình chưa được MPLAB em có 3 bản 7.20,7.50,7.52 còn ccs c thi chưa có anh nào có ccsc ma xài được cho em với, các link bên picvietnam chết hết rồi . thân chào!!! |
em muốn xài HTPIC anh hướng dẫn em nghe anh ngohaibac
em hy vọng anh ngohaibac sẽ làm cho HTPIC mình rôm rả lên so với mấy anh bên ccs c bây giờ em mới bắt đầu nhưng hy vọng 2 tháng sau em viết được chương trình bự bự pots lên khoe với anh em (quang báo chẳng hạn!hi hi) hit hit nhưng bay giờ ko biết máy em có lổi ko mà MPLAB hết chạy được rùi http://www.picvietnam.com/forum//forumdisplay.php?f=34 @ngohaibac: Lần sau không được spam nhé em. |
Trích:
Em cài lại chú ý chọn Custom Option khi nó cho lựa chọn khi cài nhé, rùi chọn hết mà cài cho chắc chắn. Cái này giống cài nhiều phần mềm mà em. Chúc em thành công. |
em cai custom roi nhung cung ko duoc anh a!
ko hiểu nỗi hôm trước em cài và dùng được nhưng từ khi gở ra cài lại thì ko thảnh công không biết tại sao nữa @ngohaibac: Lần sau em viết bài thì phải viết dài, hỏi thì hỏi vào một bài là được. Em vào luồng về MPASM để thảo luận và xem các anh chị đã làm nhé. http://www.picvietnam.com/forum//forumdisplay.php?f=34 Chúc em thành công. |
Thư viện I2C Master.
Tiếp theo là về module I2C, một chuẩn giao tiếp quan trọng khi giao tiếp với ngoại vi như EEPROM, RTS(DS1307),...
Do đó, mình xin cung cấp cho các bạn các hàm và thực thi của các hàm này trên HTPIC. Mình có tham khảo cả ở bọn htsoft nhưng nó viết sai một số hàm không chạy được, mình đã viết lại toàn bộ. Đầu tiên là hàm I2C.h: Code:
//I2C.h Code:
// I2C.c - Khởi tạo I2C bằng I2C_Start(); - Start bằng I2C_Start(); - Chọn slave giao tiếp bằng cách ghi địa chỉ và bit RW tương ứng với chế độ đọc hay ghi. - Ghi dữ liệu lựa chọn byte nào cần ghi hay cần đọc trong bảng RAM của DS1307. - Ghi dữ liệu hay là đọc dữ liệu. Chú ý: khi ghi xong, muốn đọc thì phải làm lại tức là phải restart nhé. Chúc các bạn thành công. |
cám ơn anh ngohaibac để em cài cái máy tính của em rồi em làm lại những gì anh hướng dẫn thữ xem sao! em sẽ không bao giờ bỏ cuộc cả hôm nay em sẽ cài máy lại rồi cài MPLAP rồi cài HT-pic và CCS C luôn
@nohb: những cái này em có thể chát Yahoo với anh. Anh đề nghị không spam bài ở đây. Để cài HTPIC, CCS em xem hướng dẫn là cài được. Em xem xong anh sẽ del bài này đó. |
Chào các bạn.
Mình thấy các thư viện của mình vẫn chưa tối ưu. Thư viện sẽ phải có thêm các lựa chọn là các constant để thiết lập cho các hàm Init. Các trình dịch tự sinh mã đều có các yếu tố này nhưng mà thấy C18, C30 có cách đặt tên các lựa chọn này khá hay. Nên bạn nào có thời gian thì nên viết lại và thêm các constant này vào thì chương trình sẽ có tính sử dụng lại cao. Mình có thời gian sẽ viết lại thêm. Chúc các bạn thành công. |
các bác cho em hỏi HTPIC với HTPIC 18 có khác nhau không vậy :D
|
Em cam on Bac nhieu lam.Bac that rong luong.thanh vien moi
|
HT-PIC cho động cơ bước
chào các bác, em đang làm bài tập điều khiển động cơ bước loại 4 pha,2cuộn dây, 1 nguồn 5V chung cho 2 cuộn dây. Góc bước 7.5 độ. Làm và mô phỏng trên mạch thật mà mãi ko được. phát nản cả người. với đoạn code dưới thì động cơ quay bốn bước thì dừng, ko quay nữa, bấm nút thì động cơ lại quay tiếp.
Hình trên proteous mang tính chất minh họa, vì ko mô phỏng trên proteous thuật toán là cứ sau mỗi lần cấp xung tới các cuộn dây của động cơ thì lại check nút bấm và cấp xung tiếp theo đúng chiều để động cơ quay cho phù hợp với yêu cầu nút bấm. nếu bác nào có code về bài tập này thì up lên cho anh em xem với! code: // DIEU KHIEN DONG CO BUOC: loai 4 pha, goc buoc 7.5do, dien ap 5V // Nut bam RB0 : Quay trai; nut RB1 : dung; RB2 : Quay phai // yeu cau: dong co dang quay trai neu bam nut quay phai (mot lan, ko can bam nhieu lan) thi doi chieu va quay phai. // dong co dang quay phai neu bam nut quay trai (mot lan) thi doi chieu va quay trai // dong co dang quay bam nut dung thi dung lai, nhung PORTD van duoc xuat ra 1 gia tri bang gia tri cuoi cung ngay truoc khi dung #include<pic.h> __CONFIG(HS & PWRTEN & BOREN & LVPDIS & WDTDIS); // ============= KHAI BAO CAC CHUONG TRINH CON =========== // ============= CHU Y: phai xap xep theo dung thu tu chuong trinh con o duoi. Mot loi ngo ngan HAHAHA ========= char phimbam(void); void DL(unsigned int i); // ============= CHUONG TRINH CHINH =========== void main () { // ============= KHOI TAO ============ static char a; // bien a dieu khien trang thai hoat dong cua cua dong co OPTION = 0b00000000; // dung prescaler cho timer0 voi ti le 1:2 Va dung tro keo len PORTB TRISB = 0b00000111; // chan RB0, RB1, RB2 la input TRISD = 0b00000000; // PORTD la cong ra PORTD = 0b01010000; // PORTD gia su dang o vi tri dau ung voi gia tri 0b01010000, cac vi tri vai tro nhu nhau. while (1) { a = phimbam(); if (PORTD == 0b01010000) { switch(a) { case 1 : { DL (5000); //trai PORTD = 0b10010000; }; break; case 2 : { DL (5000); PORTD = 0b01010000; }; break; case 3 : { DL (5000); PORTD = 0b01100000; }; //phai break; }; }; if (PORTD == 0b10010000) { switch(a) { case 1 : { DL (5000); //trai PORTD = 0b10100000; }; break; case 2 : { DL (5000); PORTD = 0b10010000; }; break; case 3 : { DL (5000); PORTD = 0b01010000; }; //phai break; }; }; if (PORTD == 0b10100000) { switch(a) { case 1 : { DL (5000); //trai PORTD = 0b01100000; }; break; case 2 : { DL (5000); PORTD = 0b10100000; }; break; case 3 : { DL (5000); PORTD = 0b10010000; }; //phai break; }; }; if (PORTD == 0b01100000) { switch(a) { case 1 : { DL (5000); //trai PORTD = 0b01010000; }; break; case 2 : { DL (5000); PORTD = 0b01100000; }; break; case 3 : { DL (5000); PORTD = 0b10100000; }; //phai break; }; }; } } // =========== CAC CHUONG TRINH CON ============ //============================================== // chuong trinh "phimbam" phai lam sao de an 1 lan la duoc? chu ko can an nhieu lan hoac la phai giu nut an 1 luc ??????? static char phimbam(void) { if ((RB0==0)&&(RB1==1)&&(RB2==1)) return (1); // dong co quay trai if ((RB1==0)&&(RB0==1)&&(RB2==1)) return (2); // dong co dung if ((RB2==0)&&(RB1==1)&&(RB0==1)) return (3); // dong co quay phai } //================ HAM DELAY DUNG TIMER0 ============= void DL(unsigned int i) { while (i--) { TMR0 = 6; T0IF = 0; while (!T0IF); }; } -> động cơ quay bốn bước dừng chắc do biến ''a'' ko giữ được giá trị ở vòng while tiếp theo. |
hiên nay minh đang làm đồ án đồng hồ số hiện thị trên led 7 đoạn (dùng led đơn kết nối như led 7 đoạn). với kích thước 43*130 cm. nhưng phần cứng thì minh đã làm nhưng chưa chạy được vì port quét led chưa hoạt động còn port quét dữ liệu data thì hoạt động. mong các anh em tư vấn giùm minh. minh sử dụng ic 89c51 lập trình và chương trình đã thành công nhưng phần cứng thì chưa {minh xuất dữ liệu ra mưc 0} http://www.megaupload.com/?d=KH8OLX77
nho tu van goi qua mail: tranthanhbinh8888@gmail.com |
Bac ơi cho mình hỏi bạn viết bằng chuong trình biên dịch nào thế CCS-C hay là HTPICC
|
Anh Bắc ơi, có bài nghiên cứu nào của anh về điều khiển LED ma trận post cho mọi người tham khảo với...
Thanks |
Múi giờ GMT. Hiện tại là 07:12 AM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam