Nếu đây là lần đầu tiên đến với Điện Tử Việt Nam, bạn có thể đọc phần Hỏi đáp bằng cách nhấn vào liên kết. Có thể bạn cần đăng kí trước khi có thể gửi bài . Để bắt đầu xem bài viết, chọn diễn đàn bạn muốn thăm dưới đây.
Theo toi, Keil co chuong trinh Debug rat day du, co the chay mo phong xem thoi gian thuc thi cua cac chuong trinh delay la bao nhieu rat chinh xac, khong chi la chuong trinh delay ma cac chuong trinh con ton bao nhieu tthoi gian chung ta cung co the quan sat.
Thực ra khi dịch thì Keil sẽ dịch ra asm rồi mới dịch ra file hex, nên trong trường hợp chúng ta cần tính chính xác thời gian của các chương trình con hay đoạn chương trình thì ta có thể chèn thêm đoạn mã asm vào. Dĩ nhiên đoạn asm này chúng ta đã tính toán được rồi. Như thế chúng ta có thể chủ động hơn trong quá trình lập trình. Còn nếu không chúng ta vẫn có thể dùng Keil để tính chính xác thời gian được như bác tramhero nói.
Nhưng chủ động vẫn hơn bị động phải không bác.
Cảm ơn anh em đã giúp đỡ.
Tôi nghĩ trong chương trình đôi lúc cài thêm đoạn asm cũng đơn giản được đôi chút.
Nhất là trong trường hợp đang học viết bằng C chưa thạo, bí quá thì táng một đoạn asm vào chữa cháy.
mà cái kiểu chạy mô phỏng trong keil như thế nào hả bác tramhero, bác có thể hướng dẫn thêm được không?
chương trình debug hỗ trợ nhiều chế độ
như chạy từng lệnh hay chạy cả chương trình
nó cho phép mô phỏng I/0 timer ,counter tính toán thời gian thực
hiện chương trình ..vv
bác vào debug chọn start debug chọn go là chay chương trình
Các bác ơi cho hỏi trong keilc thì sử dụng ngắt như thế nào vậy.Cách khai báo như thế nào. ví dụ như sau:
void Ex0Isr(void) interrupt 0
Có phải là ngắt ngoài 0 không? Số 0 để làm gì vậy?
Và hàm này nữa
void timer0(void)interrupt 1 using 1 //ngắt bộ định thời 0 bank 1(bank 1hay MODE 1)
void Ex1Isr(void) interrupt 1 dùng để làm gì vậy Có phải là khai báo ngắt ngoài 1 không?
Nhờ các bác chỉ dùm một hàm ngắt cơ bản nha.
bác nào rảnh xem giùm tại hạ chương trình này tại sao không chạy nha
#include<AT89X51.h>
unsigned char so[10]={0x40,0xf9,0x24,0x30,0x19,0x12,0x02,0xF8,0x00,0x1 0};
unsigned char i,j,k,h;
unsigned char p1,p2,g1,g2;
Các bác ơi cho hỏi trong keilc thì sử dụng ngắt như thế nào vậy.Cách khai báo như thế nào. ví dụ như sau:
void Ex0Isr(void) interrupt 0
Có phải là ngắt ngoài 0 không? Số 0 để làm gì vậy?
Và hàm này nữa
void timer0(void)interrupt 1 using 1 //ngắt bộ định thời 0 bank 1(bank 1hay MODE 1)
void Ex1Isr(void) interrupt 1 dùng để làm gì vậy Có phải là khai báo ngắt ngoài 1 không?
Nhờ các bác chỉ dùm một hàm ngắt cơ bản nha.
bác nào rảnh xem giùm tại hạ chương trình này tại sao không chạy nha
#include<AT89X51.h>
unsigned char so[10]={0x40,0xf9,0x24,0x30,0x19,0x12,0x02,0xF8,0x00,0x1 0};
unsigned char i,j,k,h;
unsigned char p1,p2,g1,g2;
TMOD=0X21; //TIMER0 CHE DO 1,TIMER1 CHE DO 2
IE=0X8F; // CHO PHEP NGAT CAC NGAT
IT0=0;
IT1=0;
while(1)
{
}
}
Mò mẫm cả buổi mà khồn hiểu gì hết
hề hề ,cái interrupt 1 là ngắt timer có phải ngắt ngoài đâu
còn chương trình của bác dùng dùng đến ngắt ngoài 0 ,1 thì phải khai báo
số hiệu ngắt là 0 và 2
còn bác gán cái TMO=0x21 chả hỉu định làm gì
nếu dùng timer thì phải có lệnh gán TR0=1 để bật timer chứ và nạp giá trị vho th,tl nửa
Bác trả lời sớm chút thì tại hạ khỏi phải vò đầu bứt tai rồi.mò mẫm mãi mới ra Sau khi xem lại số hiệu ngắt mới biết mình ngu.Chương trình trên đúng là không chạy được.Cảm ơn bác GSC nha.
Đây là code sau khi sữa!
#include <regx51.h>
unsigned char i;
unsigned char j;
int tg;
const unsigned char Font[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0};
unsigned char a[3]={0x01,0x02};
void tang()
{
i=i+1;
if (i==10)
{j=j+1;
i=0;
if (j==10) j=0;
};
}
void delay(unsigned int ms)
{
unsigned int k,l;
for (k=0;k<ms;k++)
for (l=0;l<120;l++)
{};
}
void main()
{while(1)
{
tg=121;
while(tg--)
{P3=a[0];
P2=Font[i];
delay(3);
P3=a[1];
P2=Font[j] ;//hi?n th? s? 1 trên led 1
delay(3);};
tang();
}
}
Khó nhất trên đời làm trang nam tử
Ý chí vững vàng mà tình cảm lại mênh mang
bác giáo sư cần cho mình hỏi một chút. mình lấy cái chương trình LCD của bác sử dụng nhưng mà mình không hiểu ở chổ, LCD có 8 đường dữ liệu, mình không biết khai báo thế nào, dùng Port nào, có phải dòng lệnh sfr LCDdata = 0x80;này không? như vậy nó dùng Port mấy, LCD của mình sử dụng Port0 để gửi dữ liệu đấy. xin bác vui lòng chỉ rõ cho mình, thanks!
Cảm ơn bác đã nhiệt thành chia sẻ kinh nghiệm bản thân mình cho mọi người.
Tuy nhiên, theo tiếp xúc hạn hẹp của em với mosfet thì vấn đề bác đo vôn ở cực D và thấy đỉnh nó 70V/55V Vds max, như thí nghiệm và trong hình của bác...
Cho tới thời điểm này, quả thật Đình Thường đây quá thất vọng, không hào hứng với Suno-AI lắm bởi ra lệnh Creat mấy chục lần với các thay đổi thì mới chọn được 2 bản hát đúng giai điệu tầm 80% để cắt ghép tạo thành bài hát...
Chán quá các bác, em nhạt nhẽo quá nên tán em nào cũng tạch, tuyệt vọng vô cùng, nay lại được mấy anh đồng nghiệp cty đối tác mách cho em gái kia sinh năm 2K đầu, em chả biết nhóm đối tượng này phải tán ra sao bây giờ ?
Tính ra em...
Có thể, ví dụ phần phản hồi gồm vi mạch cách ly quang, zener thứ cấp, transistor và điện trở phản hồi dòng ... Bất kỳ linh kiện nào nhóm đó hỏng dẫn tới mất đường phản hồi. TNY chính hãng phát hiện được chuyện đó nhưng linh kiện...
· Thí nghiệm 1 (Mạch boost, Vcc=12V, kích bằng dao động PƯM, duty 10%): * Không có snubber + không tải: Xuất hiện hiện tượng dao động tắt dần tại cực D Mosfet (ringing). Hình 1 cho thấy trong chu kỳ đầu, điện áp spike lên tới hàng trăm V, điện...
Comment