Chuong trình đã được chỉnh sửa (tắt chức năng A/D, không thao tác trực tiếp trên PORT nữa).
Hiện tại PC của mình không có MPLAB IDE nên không dịch sang file Hex được, các bạn về dịch dùm mình nha.
Trong file mô phỏng không dùng Trans và hiển thị không đúng thứ tự các Led tuy vậy không bị chớp, quan trọng nhất là mình nạp vô mạch thật thì chạy dúng. Vì vậy các bạn cứ nạp thử vào IC di.
File dính kèm gồm ASM, file mô phỏng Proteus 6.9SP5.
Code:
;---------------------------------------------------------------------------
List p=16f887
#INCLUDE <P16F887.INC>
__CONFIG _CONFIG1, _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC &_LVP_OFF
;THACH ANH 4MHZ
;CHUONG TRINH HIEN THI SO '1234' LEN 4 LED 7SEG DUNG 7447
;DA CHINH SUA
;TRINH DICH MPLAB 8.14
;---------------------------------------------------------------------------
COUNT1 EQU 0X20
COUNT2 EQU 0X21
COUNT3 EQU 0X22
;---------------------------------------------------------------------------
ORG 0X0000
GOTO MAIN
MAIN
;KHOI TAO PORT
BANKSEL TRISB ;BSF STATUS,RP0 BSF STATUS,RP1
CLRF TRISB
CLRF TRISC
CLRF TRISD
BANKSEL ANSEL
CLRF ANSELH ;TAT CHUC NANG A/D CUA VDK
BANKSEL PORTB
;---------------------------------------------------------------------------
;BAT DAU CHUONG TRINH
START
MOVLW 0E0H ;DONVI
IORLW 04H
MOVWF PORTB
CALL DELAY1
MOVLW 0D0H ;CHUC
IORLW 03H
MOVWF PORTB
CALL DELAY1
MOVLW 0B0H ;TRAM
IORLW 02H
MOVWF PORTB
CALL DELAY1
MOVLW 070H ;NGAN
IORLW 01H
MOVWF PORTB
CALL DELAY1
GOTO START
DELAY1:
MOVLW d'1'
MOVWF COUNT1
D1
MOVLW d'199'
MOVWF COUNT2
MOVLW d'1'
MOVWF COUNT3
DELAY0
DECFSZ COUNT2,1
GOTO $+2
DECFSZ COUNT3,1
GOTO DELAY0
DECFSZ COUNT1,1
GOTO D1
RETURN
END