chào các bác
các bác cho e hỏi là code này bị lỗi gì mà khi lưu đc dưới dạng file.c rùi nhưng không chuyển sang file.HEX đc ah??
e mới tập lập trình nên các bác thông cảm cho em
;PHAN KHAI BAO CAC BIT NGO VAO
PWM BIT P1.6 ;BIT DIEU KHIEN THIET BI
UP BIT P3.4 ;TANG GIA TRI PWM
DOWN BIT P3.5 ;GIAM GIA TRI PWM
;PHAN KHAI BAO BIEN LED
PWM_VALUE EQU 31H
;KHAI BAO CAC VECTOR NGAT
ORG 0000H
LJMP SETUP ;KHOI DONG CHUONG TRINH KHI CAP NGUON
ORG 000BH
LJMP T0_ISR ;NGAT TIMER 0 DIEU RONG XUNG
ORG 0030H
SETUP:
SETB EA ;CHO PHEP NGAT TOAN CUC
SETB ET0 ;CHO PHEP NGAT TIMER 0
CLR PWM ;TAT THIET BI
MOV TMOD,#11H
MOV TH0,#HIGH(-200) ;\ ;TA 12MHZ => 200us x 100% = 20000us = 20ms
MOV TL0,#LOW(-200) ;/ CHU KY DIEU XUNG
MOV PWM_VALUE,#0 ;MAC DINH GIA TRI PWM = 0
MOV R7,#0 ;BIEN XAC DINH SO LAN NGAT TIMER
SETB TR0 ;CHO PHEP TIMER HOAT DONG
MAIN:
JB UP,CHECK_DOWN ;NEU PHIM UP = '1' THI KIEM TRA PHIM DOWN
LCALL DELAY200MS ;NEU PHIM UP = '0' THI CHO CHONG XUNG NAY
INC PWM_VALUE ;TANG GIA TRI PWM
MOV A,PWM_VALUE
CJNE A,#101,EXIT_UP ;CHUA TOI NGUONG TREN THI THOAT THU TUC NHAN PHIM
MOV PWM_VALUE,#100 ;DO DAY XUNG DAT 100%
EXIT_UP:
JMP MAIN
CHECK_DOWN:
JB DOWN,MAIN
LCALL DELAY200MS
DEC PWM_VALUE
MOV A,PWM_VALUE
CJNE A,#-1,EXIT_DOWN ;CHUA TOI NGUONG DUOI THI THOAT THU TUC NHAN PHIM
MOV PWM_VALUE,#0 ;DO DAY XUNG BANG 0
EXIT_DOWN:
JMP MAIN
T0_ISR: ;NGAT TIMER DUNG DE DIEU RONG XUNG
PUSH ACC
MOV 7FH,C
CLR TR0
MOV TH0,#HIGH(-200)
MOV TL0,#LOW(-200)
SETB TR0
MOV A,PWM_VALUE
CJNE A,#0,EN_PWM ;DO DAY XUNG <> 0 THI CHO DIEU XUNG
JMP EXIT_ISR ;DO DAY XUNG = 0 THI THOAT KHOI THU TUC NGAT
EN_PWM:
INC R7 ;TANG BIEN DEM NGAT
MOV A,R7
CJNE A,PWM_VALUE,OFF_PULSE ;DU THOI GIAN DAY XUNG THI TAT THIET BI
CLR PWM ;TAT THIET BI
OFF_PULSE:
CJNE A,#100,EXIT_ISR ;CHUA HET CHU KY DIEU XUNG THI THOAT NGAT
SETB PWM ;TOI ROI THI MO THIET BI
MOV R7,#0 ;RESET LAI BIEN DEM
EXIT_ISR:
MOV C,7FH
POP ACC
RETI
DELAY50MS:
MOV TH1,#HIGH(-50000) ; CHUONG TRINH CON TRE 50MS GIAY
MOV TL1,#LOW(-50000) ; SU DUNG THACH ANH 12MHZ
SETB TR1
JNB TF1,$
CLR TR1
CLR TF1
RET
DELAY200MS:
LCALL DELAY50MS
LCALL DELAY50MS
LCALL DELAY50MS
LCALL DELAY50MS
RET
END
bài này nữa ah
org 0
jmp start
start:
call docbanphim
call dieukhiendongco
jmp start ;---------------------
docbanphim:
jb P0.1,dbpNEXT1
mov R0,#0;STOP
jmp dbpOK
dbpNEXT1:
jb T1.4,dbpNEXT2
mov R0,#1;THUAN
jmp dbpOK
dbpNEXT2:
jb P1.7,dbpOK
mov R0,#2;NGUOC
jmp dbpOK
dbpOK:
ret;~~~~~~~~~~~~~~~~~~~~
dieukhiendongco:
CJNB R0,#0,dkdcNEXT1
CLR P2.0
CLR P2.2
imp dkdcOK
dkdcNEXT1:
CJNE R0,#1,dkdcNEXT2
SETB P2.0
CLR P2.2
jmp dkdcOK
dkdcNEXT2:
CJNE R0,#2,dkdcOK
CLR P2.0
SETB P2.2
dkdcOK:
ret;~~~~~~~~~~~~~~~~~~~
end
thanks các bác ah
các bác cho e hỏi là code này bị lỗi gì mà khi lưu đc dưới dạng file.c rùi nhưng không chuyển sang file.HEX đc ah??
e mới tập lập trình nên các bác thông cảm cho em
;PHAN KHAI BAO CAC BIT NGO VAO
PWM BIT P1.6 ;BIT DIEU KHIEN THIET BI
UP BIT P3.4 ;TANG GIA TRI PWM
DOWN BIT P3.5 ;GIAM GIA TRI PWM
;PHAN KHAI BAO BIEN LED
PWM_VALUE EQU 31H
;KHAI BAO CAC VECTOR NGAT
ORG 0000H
LJMP SETUP ;KHOI DONG CHUONG TRINH KHI CAP NGUON
ORG 000BH
LJMP T0_ISR ;NGAT TIMER 0 DIEU RONG XUNG
ORG 0030H
SETUP:
SETB EA ;CHO PHEP NGAT TOAN CUC
SETB ET0 ;CHO PHEP NGAT TIMER 0
CLR PWM ;TAT THIET BI
MOV TMOD,#11H
MOV TH0,#HIGH(-200) ;\ ;TA 12MHZ => 200us x 100% = 20000us = 20ms
MOV TL0,#LOW(-200) ;/ CHU KY DIEU XUNG
MOV PWM_VALUE,#0 ;MAC DINH GIA TRI PWM = 0
MOV R7,#0 ;BIEN XAC DINH SO LAN NGAT TIMER
SETB TR0 ;CHO PHEP TIMER HOAT DONG
MAIN:
JB UP,CHECK_DOWN ;NEU PHIM UP = '1' THI KIEM TRA PHIM DOWN
LCALL DELAY200MS ;NEU PHIM UP = '0' THI CHO CHONG XUNG NAY
INC PWM_VALUE ;TANG GIA TRI PWM
MOV A,PWM_VALUE
CJNE A,#101,EXIT_UP ;CHUA TOI NGUONG TREN THI THOAT THU TUC NHAN PHIM
MOV PWM_VALUE,#100 ;DO DAY XUNG DAT 100%
EXIT_UP:
JMP MAIN
CHECK_DOWN:
JB DOWN,MAIN
LCALL DELAY200MS
DEC PWM_VALUE
MOV A,PWM_VALUE
CJNE A,#-1,EXIT_DOWN ;CHUA TOI NGUONG DUOI THI THOAT THU TUC NHAN PHIM
MOV PWM_VALUE,#0 ;DO DAY XUNG BANG 0
EXIT_DOWN:
JMP MAIN
T0_ISR: ;NGAT TIMER DUNG DE DIEU RONG XUNG
PUSH ACC
MOV 7FH,C
CLR TR0
MOV TH0,#HIGH(-200)
MOV TL0,#LOW(-200)
SETB TR0
MOV A,PWM_VALUE
CJNE A,#0,EN_PWM ;DO DAY XUNG <> 0 THI CHO DIEU XUNG
JMP EXIT_ISR ;DO DAY XUNG = 0 THI THOAT KHOI THU TUC NGAT
EN_PWM:
INC R7 ;TANG BIEN DEM NGAT
MOV A,R7
CJNE A,PWM_VALUE,OFF_PULSE ;DU THOI GIAN DAY XUNG THI TAT THIET BI
CLR PWM ;TAT THIET BI
OFF_PULSE:
CJNE A,#100,EXIT_ISR ;CHUA HET CHU KY DIEU XUNG THI THOAT NGAT
SETB PWM ;TOI ROI THI MO THIET BI
MOV R7,#0 ;RESET LAI BIEN DEM
EXIT_ISR:
MOV C,7FH
POP ACC
RETI
DELAY50MS:
MOV TH1,#HIGH(-50000) ; CHUONG TRINH CON TRE 50MS GIAY
MOV TL1,#LOW(-50000) ; SU DUNG THACH ANH 12MHZ
SETB TR1
JNB TF1,$
CLR TR1
CLR TF1
RET
DELAY200MS:
LCALL DELAY50MS
LCALL DELAY50MS
LCALL DELAY50MS
LCALL DELAY50MS
RET
END
bài này nữa ah
org 0
jmp start
start:
call docbanphim
call dieukhiendongco
jmp start ;---------------------
docbanphim:
jb P0.1,dbpNEXT1
mov R0,#0;STOP
jmp dbpOK
dbpNEXT1:
jb T1.4,dbpNEXT2
mov R0,#1;THUAN
jmp dbpOK
dbpNEXT2:
jb P1.7,dbpOK
mov R0,#2;NGUOC
jmp dbpOK
dbpOK:
ret;~~~~~~~~~~~~~~~~~~~~
dieukhiendongco:
CJNB R0,#0,dkdcNEXT1
CLR P2.0
CLR P2.2
imp dkdcOK
dkdcNEXT1:
CJNE R0,#1,dkdcNEXT2
SETB P2.0
CLR P2.2
jmp dkdcOK
dkdcNEXT2:
CJNE R0,#2,dkdcOK
CLR P2.0
SETB P2.2
dkdcOK:
ret;~~~~~~~~~~~~~~~~~~~
end
thanks các bác ah
Comment