
em có cái mạch đếm sản phẩm và code đi cùng.em đã chạy mô phỏng trên proteus và kết quả là mạch chạy rất ngon và ổn định.nhưng khi em làm trên mạch thật thì lại bị lỗi...khi em ấn các nút bấm điều khiển thì led cũng tăng hoặc giảm theo đúng chức năng của phím bấm rồi...nhưng mà khi em bỏ tay ra thì led lại trở về 0 ngay lập tức.em đã thử đi thử lại rất nhiều lần rồi nhưng mà ko được.các bác xem hộ và chỉ giáo cho em với...bài tập em sắp phải nộp rồi
đây là code của em :
Code:
.INCLUDE "M8515DEF.INC"
.CSEG.
.ORG 0x000
RJMP BATDAU
.ORG 0x0020
BATDAU:
;KHOI DONG STACK POINTER
LDI R17, HIGH(RAMEND)
LDI R16, LOW(RAMEND)
OUT SPL, R16
OUT SPH,R17
; KHOI DONG CAC PORT
CLR R16 ; XOA R16, R16=0
OUT DDRB, R16; DDRB=0, PORTB LA NGO NHAP
OUT DDRD, R16
LDI R16, 0xFF; SET TAT CA CAC BIT CUA R16 LEN 1
OUT PORTB,R16; DDRB=0, PORTB =0xFF, KEO LEN CAC CHAN PORTB
OUT PORTD,R16
OUT DDRA, R16 ; HANG CHUC
CLR R28
OUT DDRC, R16; DDRD=0xFF, PORTD LA NGO XUAT HANG DON VI
CLR R25; XOA R25, R25 LA THANH GHI DUNG CHUA SO DEM
CLR R22
CLR R26
CLR R27
SER R20 ; R21 LA THANH GHI TAM CHUA GIA TRI TRUOC DO CUA PINB
SER R23 ; R23 LA THANH GHI TAM CHUA GIA TRI TRUOC DO CUA PIND
MAIN:
IN R22,PIND
RCALL NHAP
RCALL DEM_TIEP
RJMP MAIN
DEM_LUI:
IN R21,PINB ; DOC GIA TRI TU PINB, TUC TU CAC BUTTON
RCALL SOSANH1; GOI CHUONG TRINH CON SOSANH
RCALL SOSANH2
OUT PORTC, R25 ; XUAT GIA TRI DEM RA PORTD
OUT PORTA, R28
SBRS R21,1; NEU BIT 1 CUA R21 (TUC CHAN PB1) =1 THI BO QUA DONG
;TIEP THEO
RCALL TANG; NHAY DEN CHUONG TRINH CON GIAM TANG GIA TRI DEM
MOV R20,R21; LUU LAI TRANG THAI PINB
RJMP DEM_LUI
RET
DEM_TIEP:
IN R21,PINB ; DOC GIA TRI TU PINB, TUC TU CAC BUTTON
RCALL SOSANH1; GOI CHUONG TRINH CON SOSANH
RCALL SOSANH2
OUT PORTC, R25 ; XUAT GIA TRI DEM RA PORTD
OUT PORTA, R28
SBRS R21,1; NEU BIT 1 CUA R21 (TUC CHAN PB1) =1 THI BO QUA DONG
;TIEP THEO
RCALL TANG; NHAY DEN CHUONG TRINH CON GIAM TANG GIA TRI DEM
MOV R20,R21; LUU LAI TRANG THAI PINB
SBRC R21,3
RJMP DEM_TIEP
RET
;**********************CHUONG TRINH CON************************
; **************subroutine kiem tra gioi hang (tu 0 den 9) cua so dem
SOSANH1:
CPI R25, 10
BREQ RESET0; NEU GIA TRI DEM=10 THI TRA VE 0
CPI R25, 255
BREQ RESET9; NEU GIA TRI DEM =255 THI TRA VE 9
RJMP QUAYVE; NHAY DEN NHAN QUAYVE
SOSANH2:
CPI R28,10
BREQ RESET1;
CPI R28,225
BREQ RESET91
RJMP QUAYVE
RESET0:
LDI R25,$0; TRA GIA TRI DEM VE 0
INC R28
RJMP QUAYVE
RESET9:
LDI R25,$9; GAN 9 CHO GIA TRI DEM
QUAYVE:
RET
RESET1:
LDI R28,$0
RJMP QUAYVE
RESET91:
LDI R28,$9
; ************************************************************
; **************subroutine tang so dem 1 don vi neu dieu kien thoa
TANG:
SBRS R20,1
RET
INC R25
RET
;========NHAP SO SAN PHAM =========
NHAP:
IN R22,PIND ; DOC GIA TRI TU PIND VAO THANH GHI R22
RCALL SOSANH3
OUT PORTA,R28
SBRS R22,0 ; NEU BIT 0 CUA R22 (TUC CHAN PD0=1,KHONG AN PHIM) THI BO QUA DONG TIEP THEO
RCALL TANG_HANG_CHUC
SBRS R22,1
RCALL GIAM_HANG_CHUC
RCALL SOSANH4
OUT PORTC,R25
SBRS R22,4
RCALL TANG_HANG_DVI
SBRS R22,5
RCALL GIAM_HANG_DVI
MOV R23,R22 ; LUU LAI TRANG THAI PIND VAO R23
SBRC R22,6 ; NEU BIT4 CUA R22( TUC PD4=0-AN PHIM )THI BO QUA DONG TIEP THEO
RJMP NHAP
RET
SOSANH3:
CPI R28,10
BREQ RESET1
CPI R28,255
BREQ RESET91
RJMP QUAYVE
TANG_HANG_CHUC:
SBRS R23,0
RET
INC R28
RET
GIAM_HANG_CHUC:
SBRS R23,1
RET
DEC R28
RET
SOSANH4:
CPI R25,10
BREQ RESET2
CPI R25,255
BREQ RESET9
RJMP QUAYVE
RESET2:
LDI R25,$0; TRA GIA TRI DEM VE 0
RJMP QUAYVE
TANG_HANG_DVI:
SBRS R23,4
RET
INC R25
RET
GIAM_HANG_DVI:
SBRS R23,5
RET
DEC R25
RET

Comment