C hay asm cũng được a à.miễn sao chương trinh chạy được.đó là mấy chương trình e lấy trên mạng thôi,e không hiểu nên nhờ mấy a giúp.e cảm ơn hồi đáp của mấy a
Thông báo
Collapse
No announcement yet.
Viet Code giup em voi
Collapse
X
-
Nguyên văn bởi youaremylife Xem bài viếttóm lại là viết bằng asm hay c
chương trình gửi lên chỉ mang tính tham khảo, chỉ thể hiện lại nôi dung đã nói trước đó, muốn build được thì phải sửa lại thêm.. a giúp e với
Comment
-
Code:#include <REGX51.H> #include <stdio.h> #define usestep #define BUTTON_PORT P2 #define MASK_BUTTON 0x07 #define BUTTON_STOP P2_0 #define BUTTON_FAST P2_1 #define BUTTON_LOW P2_2 #define PERIOD 100 #define DUTY_MIN 20 //percent of duty #define DUTY_MAX (PERIOD) #ifdef usestep #define DUTY_STEP 10 #endif #define PWM_PIN P2_7 #define disable_interrupt() ET0 = 0 #define reenable_interrupt() ET0 = 1 #define Timer_Setup() EA =0; TMOD = 0x02; TH0 = 0x9B; TL0 = 0x9B; TR0 = 0 ; ET0 = 0; EA = 1 #define Set_duty(t) PWM.duty = t unsigned char setduty; static data struct { unsigned char count; unsigned char duty; unsigned char period; }PWM; static data union { struct { unsigned char phase:1; unsigned char run:1; unsigned char error:1; unsigned char update:1; unsigned char Lowlimit:1; unsigned char Highlimit:1; unsigned char db:1; unsigned char RSTimer:1; }bits; unsigned char _byte; }status; // biến lưu trạng thái làm việc static data union { struct { unsigned char stop:1; unsigned char fast:1; unsigned char low:1; unsigned char unused:5; }bits; unsigned char _byte; }button; // biến lưu trạng thái nút nhấn // PRIVATE PROTOTYPE void Init_System(void); unsigned char check_button(void); void delay_Ms(unsigned int tdelay); void timer_interrupt_handle(void) interrupt 1 { if(status.bits.run) { if(PWM.count <= PWM.duty) PWM_PIN = 1; else if(PWM.count <=PWM.period) PWM_PIN= 0; else status.bits.RSTimer = 1; if(status.bits.RSTimer) { PWM.count = 0; status.bits.RSTimer = 0; } else PWM.count += 10; }else PWM_PIN = 0; TF0 = 0; // xoa co ngat } void main() { Init_System(); while(1) { do button._byte = check_button(); // kiem tra trang thai phim nhan while(!button._byte); // cho den khi co nut nhan if(button.bits.stop) // neu nut stop duoc nhan { disable_interrupt(); // khong cho timer hoat dong TR0 = 0; //dung timer TF0 = 0; //xoa co ngat PWM_PIN = 0; // dung dong co status.bits.error = 0; // xoa co loi status.bits.run = 0; // dong co da dung } else // nút stop không được nhấn { if((button.bits.fast)&&(button.bits.low)) // neu cả hai nút nhấn cùng được bấm xem như lỗi và bỏ qua { status.bits.error = 1; // DO SOME THING } else { if(button.bits.fast) // neu nut nhanh duoc nhan { #ifdef usestep if(!status.bits.Highlimit) { setduty = PWM.duty; setduty += DUTY_STEP; if(setduty >= DUTY_MAX) { setduty = DUTY_MAX; status.bits.Highlimit = 1; } } else if(setduty < DUTY_MAX) status.bits.Highlimit = 0; #else setduty = (unsigned char)DUTY_MAX; #endif Set_duty(setduty); // tinh nduty } if(button.bits.low) // neu nut nhanh duoc nhan { #ifdef usestep if(!status.bits.Lowlimit) { setduty = PWM.duty; if(setduty > DUTY_STEP) setduty -= DUTY_STEP; else setduty = DUTY_MIN; if(setduty <= DUTY_MIN) { setduty = DUTY_MIN; status.bits.Lowlimit = 1; } } else if(setduty > DUTY_MIN) status.bits.Lowlimit = 0; #else setduty = (unsigned char)DUTY_MIN; #endif Set_duty(setduty); // tinh nduty } if(!status.bits.run)// neu dong co dang dung thi cho phep chay lai { status.bits.run = 1; reenable_interrupt(); // cho phép timer hoạt động trở lại TR0 = 1; } } } } } unsigned char check_button(void) { unsigned char old_status,new_status; old_status = (~BUTTON_PORT)&MASK_BUTTON; //&MASK_BUTTON if(old_status) // kha nang co nut nhan { delay_Ms(1000); // chong nhieu new_status = (~BUTTON_PORT)&MASK_BUTTON; //&MASK_BUTTON while((BUTTON_PORT&MASK_BUTTON) != MASK_BUTTON); return old_status&new_status; // nếu trạng thái truoc va sau tuong ung cac nut la nhu nhau thi co nghia la nut do duoc nhan } return 0; // khong co nut nao duoc nhan } void delay_Ms(unsigned int tdelay) { // TO DO while(tdelay--); } // khoi tao void Init_System(void) { status._byte = 0; button._byte = 0; setduty = (unsigned char)DUTY_MIN; PWM.period = (unsigned char)PERIOD; Set_duty(setduty); P2 = 0xFF; PWM_PIN = 0; Timer_Setup(); }
không thì //#define usestep dòng đó chuơng trình sẽ chạy ở hai cấp tốc độ DUTY_MAX với DUTY_MIN mấy cái thiết lập bạn tự điền lấy
Comment
-
Nguyên văn bởi zangseik Xem bài viếtDùng 3 phím bấm,với phím bấm 1 tốc đô motor nhanh,pb2 toc do vua,pb3 dung.
[ATTACH=CONFIG]56097[/ATTACH]
em xin cam on nhieu,
ductuandtvt@gmail.com
cần thì mail cho mình :dinhnambkhn@gmail.com|
Comment
-
Nguyên văn bởi dinhnam123 Xem bài viếtcai này mình làm rồi, nhưng viêt asembly!^^
cần thì mail cho mình :dinhnambkhn@gmail.com
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Có nên sử dụng đèn năng lượng mặt trời không?bởi mèomướpDạ cháu thấy tùy trường hợp sẽ tốt hay ko tốt ạ. Ví như những vị trí khó kéo điện thì dùng đèn nlmt tốt, những nơi sẵn điện lưới thì ngược lại...
-
Channel: Chiếu sáng và thi công chiếu sáng
Hôm qua, 20:32 -
-
bởi mèomướpDạ chị hàng xóm nhà cháu có máy đo gió ấy ạ. Để mai mốt cháu lẻn sang mượn tạm chị ấy về đo ạ...
-
Channel: Điện tử gia dụng
Hôm qua, 20:26 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi vi van phamHa.ha.ha.
Lần đầu anh thấy đệ đầu đội trời chân đạp .... lại ...s....ợ... ha.ha.ha.
Thôi kệ huynh đệ mình cùng 1 thầy .
...
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 20:12 -
-
bởi dinhthuong80Xin kính chào tất cả những ai quan tâm và có nhã ý giúp đỡ, cùng dinhthuong80 tự tìm công thức tính lưu lượng gió quạt điện (dân dụng), qua đó thử đánh giá quạt điện dân dụng đã thực sự được thiết kế và sử dụng đúng loại cánh quạt để cho hiệu suất năng lượng hiệu quả chưa.
dinhthuong80...-
Channel: Điện tử gia dụng
Hôm qua, 16:23 -
-
Trả lời cho Có nên sử dụng đèn năng lượng mặt trời không?bởi dinhthuong80Cá nhân tôi thấy nên hạn chế dùng đèn NLMT vì những tiêu cực sau đây:
1. Khai thác tài nguyên thiên nhiên và năng lượng hóa thạch nhiều hơn, gây cạn kiệt và hiệu ứng nhà kính, tác động xấu đến trái đất nhiều hơn! ( rất nghiêm...-
Channel: Chiếu sáng và thi công chiếu sáng
Hôm qua, 15:45 -
-
bởi appongthoMã lỗi H-29 Máy giặt Panasonic là gì?
https://appongtho.com/khac-phuc-loi-...iat-panasonic/
Mã lỗi H-29 trên máy giặt Panasonic xảy ra khi hệ thống làm mát gặp sự cố, dẫn đến việc quạt không hoạt động hoặc hoạt động không...-
Channel: Điện tử gia dụng
Hôm qua, 09:44 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi nhathung1101Mà đệ tính, tửu lượng đệ là 2 lít. Huynh theo SÙ PHÙ trước nên là 4 lít.
Lão Đinh Vặn dám cân tất cả anh em 4r, thì phải 300 lít.
Mỗi tội, Đinh lão í chỉ để Vặn. Nên lôi được ra cũng là cả vấn đề.
...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 01:25 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi vi van phamCái đó phải hỏi bà í, huynh đâu biết chỉ biết uống riệu với đệ thôi....
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 00:53 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi nhathung1101Đây có đệ đây...
Vừa hàn lại cái cánh máy bay bà già nên hơi mệt!
Dưng mà hàn mãi không được, đệ bực quá bèn "tè" vào chỗ cần hàn. Thế mà ok.
Huynh giải thích hộ cái....
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 00:43 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi vi van phamNhà thùng thế nào rồi? bình an chứ? đệ nghe lời huynh đi, bất cứ việc gì cũng nghe lời bà í, để an toàn uống riệu với huynh.
Bà lão nhà mình, mình sợ ko gì xấu hổ cả.
Huynh lại độc ẩm .-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 00:16 -
Comment