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!
Dạ thấy chú dinh... có vẻ mặn nồng với đèn sự cố nên cháu rình lúc chị hàng xóm đi vắng bắc thang trèo lên chụp mấy cái đèn nhà chị ấy ạ. Tầm vài trăm cái dùng tuýp led 220v bình thường ấy ạ. Dùng chiếu sáng thay bóng tuýp luôn Hơn...
Theo sơ đồ bạn đã vẽ thì đây chỉ là mạch nguồn flyback không cách ly, phản hồi cả dòng lẫn áp thôi mà. Một dạng nguồn CC-CV thông dụng. Kiếm con chip tốt làm là được, nếu chịu chạy dãy LED có cách ly thì càng tốt.
Phật có dạy là CHÁNH NIỆM (hay CHÍNH gì ấy, ĐT bị... rối loạn ngôn ngữ và trí nhớ, mong lượng thứ!) - CHÁNH NGỮ - CHÁNH HÀNH ĐỘNG, đó là đường hướng tới CHÁNH ĐẠO.
ĐT ngu muội nên cứ áp dụng vào điện tử: phải cố...
Cháu thấy chú nhat... viết toàn cái gì gì ấy ạ khó hiểu ghê, chắc mai cháu phải đi hỏi mấy anh chị lớp lớn hơn xem sao ạ. Những việc lớn tầm cỡ thì hông phải ai cũng có đủ kiến thức, thời gian, sức khỏe, tiền bạc, đam mê, kiên...
Thôi mà, anh em giúp đỡ nhau, có gì mà lớn tiếng?
Ai không chịu giúp đỡ nhau thì vào đây nhậu với tui. Bà xã hôm nay ngũ sớm tui được tự do, solo buồn quá, Nhathung,Dinhthuong ,Đinh Vặn gì đó tui cân tuốt.
Comment