Thông báo
Collapse
No announcement yet.
Giúp mình muốn tạo 6 xung có độ rộng 120 độ bằng 8051
Collapse
X
-
đây là code do mình viết ai xem giúp mình với
Mình viết code xong rùi nhưng mà xung không được tạo ra ở các chân P2. Ai sửa giúp mình với! nản quá!
#include<REGX51.h>
/* khoi tao cong vao ra va dinh nghia cac ham
-------------------------------------------------*/
void Port2_init();
void delay_ms();
void timer0_init(); // su dung timer0 de tao xung chum 5khz, che do 2 8bit tu nap
void timer1_init(); // su dung timer1 de tinh toan phat xung dk, che do 1 16bit
/* Khai bao cac bien su dung trong chuong trinh
- a: bien dem so lan ngat timer0
- b: bien dem so lan ngat theo suon
- j: chi so cua mang
- i:
- y: goc mo alpha
*/
unsigned int a=0, b=0, c=0, d=0, y=0, j=30;
/* bang ung voi cac goc mo alpha tu 150 - 0 do, 30 bac khoi dong, giam 5 do 1 luot */
unsigned char bang[]={ 0x208D, 0x1F77, 0x1E62, 0x1D4C, 0x1C36, 0x1B20, 0x1A0B, 0x18F5,
0x17DF, 0x16C9, 0x15B3, 0x149D, 0x1388, 0x1722, 0x115C, 0x1047, 0x0F31, 0x0E1B,
0x0D05, 0x0BEF, 0x0AD9, 0x09C4, 0x08AE, 0x0798, 0x0683, 0x056D, 0x0457, 0x0341, 0x022C,
0x0116, 0x0000 };
/* Trien khai cac ham */
void Port2_init() // khoi tao port2 lam cong ra
{
P2=0x00;
}
void delay_ms(unsigned int n) // Tao ra tre ms
{
unsigned int i,j;
for(i=0;i<n;i++) // 1 vong for tao ra tre 1,12ms
for(j=0;j<140;j++);
}
void timer0_init() // chuong trinh con khoi tao ngat
{
IE=0x86; // cho phep ngat ngoai 1 va ngat timer0, chi so vector 2,1
IT1=1; // kich hoat ngat theo suon am o chan INT1
TMOD=0x12; // chon timer0 che do 2 8bit tu nap, timer1 che do 1 16bit
TL0=0x9C; TH0=0x9C; // Gia tri nap vao de tao tre 0,1ms
TR0=1;
}
void timer1_init()
{
TMOD=0x12;
TL1=0x00; TH1=0x00; // xoa gia tri thanh ghi
TR1=1; // khoi dong timer1
if(TF1==1)
{
TR1=0; // dung timer1
TF1=0; // xoa co ngat
TL1=0x00; // dem lai tu 00
TH1=0x00;
TR1=1; // khoi dong timer1
}
}
// trinh phu ngat tao xung chum 5 khz
void isr_timer0() interrupt 1
{
TR0=0;
P0_0^=1;
TR0=1;
}
// trinh phu ngat ngoai tai chan INT1
void isr_INT1() interrupt 2
{
b++; c++; d
TH1&&0x0F)<<8)||TL1; // gan d = gia tri cua thanh ghi timer1 khi co ngat
y=bang[j];
if(b<=1000) // chuong trinh khoi dong den goc mo alpha
{
if(c>=42) // t kd= 20s, so bac= 24. alpha 150-30do.
{
c=0;
j--;
}
}
if (j<=6) {y=bang[6];}
}
/* CHUONG TRINH CHINH LIEN TUC SO SANH CAC GIA TRI TRONG TIMER1 VOI CAC THOI DIEM
DE PHAT XUONG DIEU KHIEN RA CAC CHAN CONG P2*/
main()
{
Port2_init();
delay_ms();
timer0_init();
timer1_init();
while(1)
{
// chuong trinh phat xung tren cac chan port P2
if((((TH1&&0x0f)<<8)||TL1)==d+y){P2_0=1;delay_ms(6 );P2_0=0;} //T1
if((((TH1&&0x0f)<<8)||TL1)==(d+y+0x2710)){P2_1=1;d elay_ms(6);P2_1=0;} //T2
if((((TH1&&0x0f)<<8)||TL1)==d+y+0x1A0B){P2_2=1;del ay_ms(6);P2_2=0;} //T3
if((((TH1&&0x0f)<<8)||TL1)==d+0x0000){P2_3=1;delay _ms(6);P2_3=0;} //T4
if((((TH1&&0x0f)<<8)||TL1)==d+y+0x3415){P2_4=1;del ay_ms(6);P2_4=0;} //T5
if((((TH1&&0x0f)<<8)||TL1)==d+y+0x0D05){P2_5=1;del ay_ms(6);P2_5=0;} //T6
}
}
Bài viết mới nhất
Collapse
-
bởi dinhthuong92Đấy, cái tôi thắc mắc là chỗ màu hồng ấy bạn, để áp vào cao chứ không bị sụt gần bằng áp pin thì rất cần cuộc cảm để làm điều đó. Tuy nhiên, trong công thức bác thớt dẫn không thấy mặt L, và một vài mạch MPPT tôi đã kiểm...
-
Channel: Nguồn!
hôm nay, 10:01 -
-
bởi mèomướpDạ mạch sạc là 1 cục nguồn, nó sẽ điều chỉnh công suất đầu ra để có tổng trở bằng nội trở của pin ạ. Và cái cách nó chỉnh công suất đầu ra sẽ là dạng buck, boot. Đều cần đến cuộn cảm ạ. Tất nhiên chú thích thì có thể dùng dạng tuyến tính transistor để bù trừ nhưng mà nó đốt năng lượng vô ích ạ...
-
Channel: Nguồn!
Hôm qua, 16:26 -
-
bởi dinhthuong92Tng trở R của tải (gồm pin và mạch sạc) trong công thức đó rõ ràng khống có L xuất hiện. Nếu tính các dây dẫn thì rất nhỏ, bỏ qua. Vì nội trở pin là rất nhỏ, có thể nói luôn lớn hơn nội trở solar, nên mạch MPPT sẽ hầu như luôn tính...
-
Channel: Nguồn!
Hôm qua, 11:00 -
-
bởi dinhthuong92Chào bác. Đã là công thức phải tổng quát chứ, nó phải thể hiện cả quá trình, rối thì quá độ hay xác lập tính sau vì tùy điều kiện. Cũng như công thức tính diện tích chả hạn, phải là tích phân....
-
Channel: Nguồn!
Hôm qua, 10:49 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi vi van phamCa sĩ AI cũng có vài loại, có ca sĩ chuyên và không chuyên.Ca sỉ chuyên thì là Synthesizer V, còn không chuyên thì là Suno. Ca sĩ chuyên thì mệt với nó lắm, phải biết nhạc và biết cả ngôn ngữ của nó để điều khiển, còn ca sĩ không chuyên thì...
-
Channel: Tâm tình dân kỹ thuật
04-05-2026, 21:33 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Chúc mừng bác có ca khúc hay tặng bà xã nhé! Nếu muốn hát đúng ý mình thì bác chịu khó... thuê ca sĩ nha!!!!😁😁😁...
-
Channel: Tâm tình dân kỹ thuật
04-05-2026, 15:43 -
-
bởi dinhthuong92Trong các công thức không có mặt L bạn. Trước mình nghĩ cứ phải có L cơ....
-
Channel: Nguồn!
04-05-2026, 15:35 -

Comment