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
-
bởi hoannv1Tin vui cho người dùng vCaller! Phiên bản mới nhất của ứng dụng đã được cập nhật thêm tính năng chặn cuộc gọi theo dải số cố định, giúp bạn chặn các cuộc gọi không mong muốn một cách hiệu quả hơn.
Tính năng mới này có gì đặc biệt?- Chính xác: Chặn chính xác các cuộc gọi đến
-
Channel: Quảng cáo
hôm nay, 15:28 -
bởi thoiancraneCầu trục là thiết bị nâng hạ, di chuyển hàng hoá có yêu cầu nghiêm ngặt về an toàn lao động nên cần kiểm định trước khi đưa vào sử dụng và định kỳ. Việc kiểm định cầu trục sẽ giúp phát hiện nhưng hư hỏng, thiếu an toàn để...
-
Channel: Quảng cáo
hôm nay, 14:46 -
-
Trả lời cho Dùng MC34063 để làm driver lái led 1W, 3Wbởi nhathung1101Dự là bạn này định chế đèn led cho oto.
không hiểu các bạn hiểu về đèn led thế nào? chỉ mong các bạn hiểu cuộc sống chỉ có một lần thôi.-
Channel: Điện tử dành cho người mới bắt đầu
19-05-2024, 22:29 -
-
Trả lời cho Dùng MC34063 để làm driver lái led 1W, 3Wbởi bqvietChỗ đó là chỉ IC này chạy DC (tất nhiên) được mà AC cũng được. Khi chạy điện AC thì cần cầu nắn dòng và tụ lọc 100uF. Nếu chạy DC thì không cần cầu nắn mà tụ đó cũng chỉ cần tầm vài uF thôi. Cái đi-ốt thì càng dễ, luận tí...
-
Channel: Điện tử dành cho người mới bắt đầu
19-05-2024, 21:37 -
-
Trả lời cho Hỏi về nơi mua tda7294bởi bqvietChính hãng hay không vẫn khó nói nhưng hình như ở diễn đàn này chưa thấy ai kêu ca gì
http://www.linhkienchatluong.vn/ic-a...577_ct763.aspx-
Channel: Điện thanh
17-05-2024, 13:14 -
-
bởi sonlazioHi các bác,
em có nhu cầu mua ic này để thay thế
trên shopee thì trôi nổi nhiều quá sợ mua về cháy nổ, các bác có nơi nào mua chính hãng ko ạ-
Channel: Điện thanh
17-05-2024, 07:03 -
-
bởi nhathung1101Lâu nay, thấy nick chinhnguyen9 viết rất nhiều bài "phổ biến kiến thức" một cách vô tư.
Xem lại mới thấy bạn "dịch" hay "Google dịch" hay "AI" tôi đang xem xét.
Nhưng những gì đang xem tôi đánh giá là...-
Channel: Góp ý cho diễn đàn
17-05-2024, 00:24 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi nhathung1101Cảm ơn lão nói hộ lòng tôi. Nhưng cái gì "ngang" quá đều có thể giải quyết = beer
Dạo này lão có thời gian không? Em gửi vé lão bay ra HN. Đúng địa chỉ "Khu Văn Công Mai Dịch" nhé. Ta tha hồ đàm hay đàn, kể cả...-
Channel: Tâm tình dân kỹ thuật
16-05-2024, 16:57 -
-
Trả lời cho Dùng MC34063 để làm driver lái led 1W, 3Wbởi Nexus 6P
Chỗ AC 12V-18V là sao bác, rồi còn con D là giá trị bao nhiêu bác...-
Channel: Điện tử dành cho người mới bắt đầu
16-05-2024, 14:19 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi vi van phamCháu xem cái này: https://www.beemusic.vn/2020/10/chu-...-ban-nhac.html
Đầu tiên cháu viết bản nhạc phải chọn ton. Thăng hay giáng quyết đinh Ton bản nhạc, nốt nhạc cuối cùng phải đúng theo khoá nhạc....-
Channel: Tâm tình dân kỹ thuật
16-05-2024, 14:02 -
Comment