EM chỉ biết viết ASM thui . Giờ ko biết viết C như thế nào . Bác nào bớt chút thời gian hướng dẫn em các lệnh tương ứng giữa ASM và C với . Thankss các bác nhìu nhìu
Thông báo
Collapse
No announcement yet.
Bác nào giúp em cách chuyển các lệnh từ ASM sang Keil C với
Collapse
X
-
chắc bro phải đọc wa trình dịch Keil thì mới viết đc = Keil C . Tuy cũng là dạng ngôn ngữ C nhưng mỗi trình dịch lại có mỗi cách viết khác nhau !
Bro post thử code ASM lên để a e chuyển giúp cho ! Nhớ chú thích cho dễ hiểu ! vì đặc trưng của ASM phải có sơ đồ thuật toán , thì đọc mới hiểu đc !
-
Các bác giúp chuyển từ ASM sang Keil C!!!
1. Chuong trinh ngat TOISR
TOISR:
CLR TR0 ; dung bo dem
DJNZ R1,SS; R1=0? Neu chua, nhay toi SS
JB 04H,TA; Kiem tra dieu kien tra lenh=1 nhay toi TA
JNB 07H,TO4; Kiem tra dieu khien TEST, 07H=0 ?
TEST:
MOV R1,#20; nap lai gia tri cho thanh ghi R1
INC R0; tang gia tri thanh ghi R1
CJNE R0,#12,TO3; kiem tra R0=12?
MOV R0,#0; Neu R0=12, nap lai R0=0
TO3:
JC TO4; Neu R0>12
MOV R0,#0; Nap lai R0=0
TO4:
ACALL HTHI; Goi chuong trinh hien thi
JB 07H,TO5; Kiem tra lai dieu kien TEST
MOV R1,#50;
CJNE R0,#12,NHA; R0=12? Neu khac se nhay toi NHA
SJMP SS; Neu R0=12 thuc hien thu tuc ket thuc CTN
NHA:
JC HA; Neu R0>12 thuc hien thu tuc ket thuc CTN
SJMP SS;
HA:
DJNZ R2,TTA; R2=12? Neu khac 0 se nhay toi TTA
CLR P1.4; Tat chuong
MOV R2,#3; Nap lai R2=3
TTA:
SETB 04H; dao bit dieu khien tra lenh
SJMP SS ; Nhay ve doan ket thuc CTN
TA:
MOV P0,#00; Tat tat ca cac den
MOV P1,#00;
MOV R1,#50; Nap lai gia tri R1
CLR 04H; Dao bit dieu khien tra lenh
TO5:
SETB P1.4; Rung chuong
SS:
JNB 05H,ACT41; Kiem tra su co
SETB P1.5; Neu co bat den su co, nap lai bo dem va thaot
ACT41:
CLR P1.5; Tat den su co
MM:
MOV TL0,#0EFH; Nap lai gia tri bo dem
MOV TH0,#0D*H;
SETB TR0; Khoi dong lai bo dem
RETI
2. Chuong trinh chi bao dau ra
HTHI:
MOV 02FH,A
MOV A,R0;
MOV DPTR,#300H; Nap dia chi bang dau ra cho tin hieu DPTR
MOVC A,@A+DPTR; Doc gia tri tu bang ra thanh ghi A
CJNE R0,#12,F: Nap R0=12?
SJMP ACT1; Nap neu R0=12 nhay toi ACT1
F:
JC F3; R0>12 hoac R0<12?
CJNE R0,#19,F1; Neu R0>12 kiem tra R0=19?
SJMP ACT1; Neu R0=19
F1:
JC F2; Neu R0>19 hoac R0<19?
SJMP ACT2; Neu R0>19
F2:
SJMP ACT1; Neu R0<19
F3:
CJNE R0,#7,F4; Neu R0<12 kiem tra R0=7?
SJMP ACT1; Neu R0=7
F4:
JC ACT2; Nap R0<7
SJMP ACT1; Neu R0>7
ACT1:
MOV P0,A
MOV P1,#0; Xoa P1
MOV A,02FH; Lay lai gia tri thanh ghi A
RET
ACT2:
MOV P1,A
MOV P0,#0
MOV A,02FH
RET
3. Chuong trinh su co
EMER:
JB P3.3,EXIT2; Thoat ra neu P3.3=1
CLR IE.7; Cam ngat toan cuc
STAND1:
ACALL DELAY; Doi den khi nut an duoc nha
JNB P3.3,STAND1; Lap lai neu P3.3=0
JB 03H,TO11; 03F=1 nhay to TO11
SETB 05H; Dat dieu kien su co
CLR 03H; Dat off chp nut an
SETB IE.7; Cho phep ngat toan cuc
RET
TO11:
CLR 05H; huy dieu kien su co
SETB 03H ; Dat ON cho nut an
SETB IE.7 ; Cho phep ngat toan cuc
EXIT2:
RET
4. Chuong trinh TEST
TEST:
JB P3.2,EXIT1; Thoat ra neu P3.3=1
CLR IE.7; Cam ngat toan cuc
STAND:
ACALL DELAY; doi den khi nut an duoc nha
JNB P3.2,STAND; Lap lai neu P3.2=0
JNB 06H,TO1; 06F=0 nhay toi TO1
MOV A,R0; Luu Ro vao thanh ghi A
MOV 02EH,A; Cat gia tri R0 vao ngan xep
MOV R1,#20; Nap gia tri cho R1
SETB 07H; Dat dieu kien cho TEST
CLR 06H; Dat Off cho nut an
SETB IE.7; Cho phep ngat toan cuc
RET
TO1:
MOV A,02EH
MOV R0,A
MOV R1,#50
CLR 07H; huy dieu kien su co
SETB 06H; Dat On cho nut an
SETB IE.7; Cho phep ngat toan cuc
EXIT1:
RET
Comment
-
Hic ! viết ASM có cực là vậy đó ! bạn chú thích giống như ng ta đọc từng câu lệnh vậy ! ko ai chú thích kiểu ấy hết ! Muốn đọc & hiểu code của ASM , chỉ cần chú thích ngay dòng lệnh đầu tiên mình sẽ làm gì .
Code:#include<AT89C51.h> // nhập file này vào vì nó đn sẵn các thanh ghi & port trong MCU int8 R1 = giá trị ; // khai báo biến R1 & giá trị kèm theo nếu muốn , mình chọn tên biến giống tên thanh ghi cho bạn dễ theo dõi void T0ISR() using 1 // đoạn ct ngắt timer 0 { TR0 = 0 ; while(R1>0) { R1-- ; if( bít 05H ==0) {P1_5 = 1 ;}; };
Comment
-
đóng gói
nếu code asm dã được kiểm tra và hoạt động tốt thì bạn nên đóng gói phần code assembly này, sử dụng từ khóa #pragma asm và #pragma endasm. code viết bằng assembly sau khi đóng gói sẽ nhúng vào project của bạn bằng lệnh gọi chương trình con(hay là gọi ngắt). những khai báo về thanh ghi trong asm, sử dụng từ khóa DB, sẽ được khai báo bién trong C với từ khóa volatile. làm như vậy sẽ nhanh hơn là dịch từng dòng lệnh từ asm sang C. chúc thành công nhé.
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho tìm mua đồng hồ vạn năngbởi matnetgia99Ồ, cái này mình cũng có nè, có ai mua không, đồ cũ dùng từ năm 2008, hư 1 2 giai gì đấy bỏ xó hơn năm nay...
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 14:40 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi dinhthuong80À, sản phẩm họ thiết kế ra, họ yêu cầu mình chứng minh là sau chỉnh sửa thì 1 là gỡ jump cắm lại không hư mạch, 2 là gỡ jump thì 220Vdc vẫn dùng được led áp thấp 20V mà không hư led như mình báo, nên họ hiểu rõ mà....
-
Channel: Điện tử công suất
Hôm qua, 06:08 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Tôi biết và tôi biết.
Sẽ bắt đầu với cái Sồn La, rồi mấy mạch nguồn vớ vỉn.... Rồi sẽ đèn led...
Cuộc đời là những chuyến xe, nên sẽ có:
Xe đạp điện, xe máy điện, xe ô tô điện, xe cấp cứu điện, xe tang điện.
Rồi xem.-
Channel: Điện tử công suất
Hôm qua, 01:38 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Vấn đề là thu ánh sáng rồi phát ra ánh sáng cơ. Hồi mẫu giáo cô bảo đừng làm, lão không nhớ à?
Tốt nhất im mồm....-
Channel: Điện tử công suất
Hôm qua, 01:26 -
-
Trả lời cho Tiếng Anh cho người Việtbởi bqvietBài học kiểu trực tuyến dù là loại đơn giản bậc nhất cũng vẫn cần chú tâm. Chỉ bật tai nghe lên thì không có loại nào thấm nổi đâu. Cách hay hơn, dễ hơn là kiếm phim tiếng Anh nào đó xem, ban đầu bật phụ đề tiếng Việt, nghe và...
-
Channel: Tâm tình dân kỹ thuật
14-02-2025, 16:15 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nguyendinhvanỞ đtvn này mới biết đến 2 loại mạch
1 step down
2 step up
Bây giờ anh lưu vong làm thuê bên nước lạ còn làm ra cái mach vừa up vùa dow luôn.
Tính chất là:
1 Đầu vào bằn ra cho nối thẳng
2 Đầu vào cao hơn...-
Channel: Điện tử công suất
14-02-2025, 00:51 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nguyendinhvanHa ha !
Thay đổi cách nghĩ thì sẽ nghĩ ra.
.
.
.
Một thứ cần kiểm soát dòng + nhiệt + công suất tiêu tán. Nhưng lại dùng tư duy ổn áp. Làm sao mà giải quyết được.
Nó là mạch ổn dòng.
Vì thế các anh nước lạ không thèm quan tâm là phải....-
Channel: Điện tử công suất
14-02-2025, 00:42 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi dinhthuong80Vì cứ phải chỉnh sửa cho mỗi dải điện áp, quên chỉnh thì hư chíp phải bảo hành nên em thấy bất tiện, mới cần cái mạch 1 dải áp cao dùng cho tất cả loại đèn đó bác!...
-
Channel: Điện tử công suất
13-02-2025, 17:02 -
-
Trả lời cho Tiếng Anh cho người Việtbởi hankhungdtMình thỉnh thoảng cũng làm việc với người nước ngoài nói tiếng Anh thì toàn ghép nhặt từ, cộng với quơ tay quơ chân để diễn tả, hix. Nỗi khổ là không biết cách để mô tả sự việc. Tôi muốn tìm các bài giảng tiếng anh nào phù hợp...
-
Channel: Tâm tình dân kỹ thuật
13-02-2025, 08:43 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi ti500Chúc mừng bác đã chỉnh sửa thành công, nhưng theo em thì video hơi rối nếu bác muốn gửi cho bên supplier xem.
Nếu là em thì em chỉ cần nối dây để hiển thị liên tục điện áp ở ngõ ra là 220Vdc trước khi gắn LED, kế đến là cắm...-
Channel: Điện tử công suất
13-02-2025, 07:39 -
Comment