=)) em thua bác kidteam rồi
Thông báo
Collapse
No announcement yet.
Giúp e làm sao quét led từ P0--->P3 32 cổng at89c52
Collapse
X
-
Nguyên văn bởi Lenh Ho Xem bài viếtkhổ quá : 'hic' của em làm a sợ đó
tức là giả sử e có 1 biến 32 bit kiểu long nha gọi nó là x
giả sử trạng thái của nó là: x = 00000000111111110000000011111111 được chưa ( đếm coi có đủ 23 bit ko ^^) ( a viết kiểu nhị phân)
#define BYTE1(v) ((unsigned char) (v))
#define BYTE2(v) ((unsigned char) (((unsigned long) (v)) >> 8))
#define BYTE4(v) ((unsigned char) (((unsigned long) (v)) >> 16))
#define BYTE4(v) ((unsigned char) (((unsigned long) (v)) >> 24))
sau đó e gọi :
void xuat (void) {
p0 = BYTE1(x);
p1 = BYTE1(x);
p2 = BYTE1(x);
p3 = BYTE1(x);
}
trình biên dịch thực hiện lệnh p0 = BYTE1(x);
đến đấy nó ko hiểu BYTE1(x) là gì
nó chạy lên đầu và nhìn vào khai báo
#define BYTE1(v) ((unsigned char) (v))
nó thấy à thì ra BYTE1(biến) tức lấy được 8 bit thấp nhất của byte đó ; luc này 8 bit thấp nhất của x là 1111111 và đưa ra p1 nhé
tuơng tự
đến dòng:
p2 = BYTE2(x)
nó chạy lên đầu thấy khai báo:
#define BYTE2(v) ((unsigned char) (((unsigned long) (v)) >> 8))
nó hiểu à thì ra đầu tiên ta dịch biến x đi 8 lần sang phải: e thấy sau khi dịch 8 lần x lúc này là :
x = 00000000111111110000000011111111 ( ban đầu)
dịch 8 lần x = (00000000 - 8 bit số 0 được dịch vào)(00000000)(11111111)(00000000) còn 8 bit 1 cuối cùng của bị đầy ra ngoài và đưa vào 8 bit số 0 a ghi ở đầu đó
sau khi dịch e thấy ta sẽ lấy 8 bit thấp nhất = 00000000 và đưa ra p2
tương tự nha
Comment
-
Nguyên văn bởi dtcn_112 Xem bài viếtem thấy code bạn ấy viết m=~m;là lấy phần bù theo bit của m,theo khai báo ban đầu của tác giả thì ban đầu m=0x55;sau lệnh gán m=~m;thì m=0xaa;em chỉ hiểu như vậy không biết nó có sai thật không mong được các huynh chỉ giáo.
@kidteam: dường như chú này có vẻ ganh ghét j đó vs mình, mình làm j có lỗi vs cậu chăng =)). Diễn đàn là nơi chia sẻ kinh nghiệm và những thứ mình biết và mình làm đc, nên tôi biết j tôi nói đó, và những thứ đó nhiều khi có thể ko đúng. Cậu có dám chắc rằng những thứ cậu đưa nên k sai j ko, đã tối ưu ko. Code trên tôi đọc ko hiểu, k thấy logic tôi bảo ko logic, chẳng nhẽ tôi đi nói là quá logic. còn về lập trình C, C++ và nhất là lập trình C cho vdk tôi tự tin nói rằng những cái tôi nói ra là tôi biết tôi mới nói chứ ko phải bịa ra, và tôi thấy cậu dường như đang quan trọng hóa những thứ rườm rà xung quanhWebsite chính thức đổi địa chỉ website thành
Mời các bạn ghé thăm !!!
Comment
-
Nguyên văn bởi lenhoc91 Xem bài viếthj.giò thì e đã hiểu nhưng nếu e muốn viết x là kểu hex thì vậy hả a 0x00ff00ff
e ko nên làm lun
mà nên viết từng phần để test code đã đúng chưa nhéBe quan. Plz contact through email:
Comment
-
như vậy đúng ko anh.
#include <regx51.h>
unsigned long x=0x00ff00ff;
#define BYTE1(v) ((unsigned char) (v))
#define BYTE2(v) ((unsigned char) (((unsigned long) (v)) >> 8))
#define BYTE3(v) ((unsigned char) (((unsigned long) (v)) >> 16))
#define BYTE4(v) ((unsigned char) (((unsigned long) (v)) >> 24))
void delay()////delay xung 555///////
{
while(!P1_0);
while(P1_0);
}
void xuat (void)
{
P0 = BYTE1(x);
P1 = BYTE1(x);
P2 = BYTE1(x);
P3 = BYTE1(x);
}
void main(void)
{
while(1)
{
xuat();
delay();
}
}
e dịch mà đem mô phỏng nó im ru ah a ơi
Comment
-
#include <regx51.h>
unsigned long x=0x00ff00ff;
#define BYTE1(v) ((unsigned char) (v))
#define BYTE2(v) ((unsigned char) (((unsigned long) (v)) >> 8))
#define BYTE3(v) ((unsigned char) (((unsigned long) (v)) >> 16))
#define BYTE4(v) ((unsigned char) (((unsigned long) (v)) >> 24))
void xuat (void)
{
P0 = BYTE1(x);
P1 = BYTE2(x);
P2 = BYTE3(x);
P3 = BYTE4(x);
}
void main(void)
{
while(1)
{
xuat();
}
}
tạm thời e thử cái này thôi - delay làm gì
phải là byte1 - 2 - 3 -4 chứ ( sao toàn byte1) nó tắt là phải vì byte 1 toàn là số 0 mà em)
^^Be quan. Plz contact through email:
Comment
-
Nguyên văn bởi Lenh Ho Xem bài viết#include <regx51.h>
unsigned long x=0x00ff00ff;
#define BYTE1(v) ((unsigned char) (v))
#define BYTE2(v) ((unsigned char) (((unsigned long) (v)) >> 8))
#define BYTE3(v) ((unsigned char) (((unsigned long) (v)) >> 16))
#define BYTE4(v) ((unsigned char) (((unsigned long) (v)) >> 24))
void xuat (void)
{
P0 = BYTE1(x);
P1 = BYTE2(x);
P2 = BYTE3(x);
P3 = BYTE4(x);
}
void main(void)
{
while(1)
{
xuat();
}
}
tạm thời e thử cái này thôi - delay làm gì
phải là byte1 - 2 - 3 -4 chứ ( sao toàn byte1) nó tắt là phải vì byte 1 toàn là số 0 mà em)
^^
thế này thì có quét led được ko anh
Comment
Bài viết mới nhất
Collapse
-
bởi since0501Mình đào mộ xíu, cho mình hỏi là pin của bác vẫn ok chứ? Mình vừa đóng khối pin 16 cell 40135 thì khi chạy điện áp nó sụt so với khi nghỉ như video mình dẫn link, vậy cho mình hỏi là dung lượng pin sẽ tính khi áp nghỉ hay áp đang hoạt động, và pin sụt áp như vậy là bình thường hay pin kém?
ht...-
Channel: Điện tử dành cho người mới bắt đầu
hôm nay, 17:56 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi mèomướpDạ hông dám làm thì chắc chắn sẽ mãi ko thể làm được đâu ạ. Nguồn xung dân dụng vài kw giờ rất nhìu ạ, sạc ô tô điện, máy hàn, lò vi sóng, âm ly... tùy chất lượng mà độ phức tạp sẽ khác nhau ạ. Và cái giá phải trả về kinh tế...
-
Channel: Điện tử công suất
Hôm qua, 13:11 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi tuyennhanSửa dạng này thì chuyên còn không dám chắc khộng cháy nổ với linh kiện bán ngoài chợ nói gì khộng chuyên .
-
Channel: Điện tử công suất
Hôm qua, 09:25 -
-
Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.bởi tuyennhanĐúng rồi chọn mua theo tai . ca thì phải toàn dải nhạc thì chỉ cao và thấp thé nên loa ca thì nghe nhạc không hay và ngược lại .
Muốn ca và nhạc đều hay thì phải dúng 2 giàn , còn nếu chỉ có 1 thì phải chỉnh sửa lại sao cho ca và nhạc đều được không quá dở ....-
Channel: Điện thanh
Hôm qua, 09:10 -
-
bởi Ng.Phuong.5Vấn đề cũ: khi in mạch ra pdf và bấm chọn Keep Drill Holes Open, in ra thì pdf trắng đen các lỗ chân linh kiện như nhau. Mặc dù có linh kiện phần Drill là 1mm, có linh kiện thì là 3mm. Cho em hỏi cách sửa phần này ở Orcad 9.2 với ạ.
Mấy con...-
Channel: Cadence ORCAD
09-01-2025, 19:44 -
-
Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.bởi viettinhBác nói đúng quá. Cơ mà muốn mua hàng chính hãng, hàng thương hiệu mà tai lại hợp hàng tầu mới khổ chứ.
Đang tính mua cái loa tầu nữa cột đằng sau loa này, Loa sony chỉ để hát nhép thôi, có dc k các bác ...-
Channel: Điện thanh
09-01-2025, 18:12 -
-
Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.bởi nguyendinhvanTheo tôi thì khi hpj sản xuất ra cái loa đó, đã có nhiều chuyên gia kỹ thuật hiệu chỉnh, tính toán các phần tử kỹ lưỡng rồi.
Bây giờ tính toán hiệu chỉnh lại cần có đội ngũ tương đương với nhà sản xuất.
Cách đơn giản...-
Channel: Điện thanh
09-01-2025, 00:04 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi mèomướpDạ cháu có ý tốt muốn động viên chú ấy ngâm cứu khoa học thôi ạ. Về phần kiểm tra dao động thì chú ấy chưa biết thì sẽ tìm hiểu được là cần những gì ạ, chắc chắn là khi hướng dẫn phần ấy các cô chú nào đó sẽ lưu ý cần loại sò công suất ra tránh cháy nổ rồi ạ....
-
Channel: Điện tử công suất
08-01-2025, 19:02 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi tuyennhanChủ thớt hỏi có kiểm tra được dao động mà không cấp nguồn thì rõ trình ở mức nào mà mèo còn xúi ngâm cứu nữa ác vậy ....
-
Channel: Điện tử công suất
08-01-2025, 15:43 -
-
Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.bởi tuyennhanLoa bass đấu trực tiếp không qua phân tần để thành loa toàn dải xem có thoát tiếng khộng , nếu không thoát cần phải sửa lại mạch cs hay âm sắc nếu đủ trình còn nếu thoát ca hay nhưng chưa vừa ý vì bass kém chăc thì đấu lại như cũ và đấu thêm loa mid treble bên ngoài .
-
Channel: Điện thanh
08-01-2025, 15:28 -
Comment