i wrote some codes below it worked on isis.
Code:
SEGMENT_A VAR PORTB.3
SEGMENT_B VAR PORTB.7
SEGMENT_C VAR PORTB.0
SEGMENT_D VAR PORTA.3
SEGMENT_E VAR PORTA.2
SEGMENT_F VAR PORTB.2
SEGMENT_G VAR PORTB.1
DP VAR PORTB.6
BASAMAK_0 VAR PORTA.1
BASAMAK_1 VAR PORTA.7
BASAMAK_2 VAR PORTA.0
BASAMAK_3 VAR PORTA.6
DQ VAR PORTB.5
TEMP VAR BYTE
I VAR BYTE
SIGN VAR BIT
ISI VAR WORD ; TEMPERATURE REGISTER
COUNT_REMAIN VAR BYTE
MASK_0 VAR BYTE
MASK_1 VAR BYTE
MASK_2 VAR BYTE
MASK_3 VAR BYTE
CMCON = 7
OUTPUT SEGMENT_A
OUTPUT SEGMENT_B
OUTPUT SEGMENT_C
OUTPUT SEGMENT_D
OUTPUT SEGMENT_E
OUTPUT SEGMENT_F
OUTPUT SEGMENT_G
OUTPUT DP
OUTPUT BASAMAK_0
OUTPUT BASAMAK_1
OUTPUT BASAMAK_2
OUTPUT BASAMAK_3
SEGMENT_A = 0
SEGMENT_B = 0
SEGMENT_C = 0
SEGMENT_D = 0
SEGMENT_E = 0
SEGMENT_F = 0
SEGMENT_G = 0
DP = 0
BASAMAK_0 = 1 ; DISPLAYS 1. DIGIT
BASAMAK_1 = 1 ; DISPLAYS 2. DIGIT
BASAMAK_2 = 1 ; DISPLAYS 3. DIGIT
BASAMAK_3 = 1 ; DISPLAYS 4. DIGIT
MAIN :
OWOUT DQ ,1,[$CC,$44]
BEKLE :
GOSUB EKRAN_0
FOR I = 0 TO 4
GOSUB TARA
NEXT I
OWIN DQ ,4,[COUNT_REMAIN]
IF COUNT_REMAIN = 0 THEN
GOTO BEKLE
ENDIF
OWOUT DQ ,1,[$CC,$BE]
OWIN DQ ,0,[ISI.LOWBYTE , ISI.HIGHBYTE]
IF ISI.15 = 1 THEN
ISI = (65535 - ISI) + 1
SIGN = 1
ELSE
SIGN = 0
ENDIF
ISI = (ISI * 10)/16
GOTO MAIN
EKRAN_0 : ; TRANSFER THE REGISTERS TO DIPLAY
MASK_3 = ISI DIG 3
MASK_2 = ISI DIG 2
IF SIGN = 1 THEN
MASK_3 = " "
MASK_2 = "-"
ENDIF
MASK_1 = ISI DIG 1
MASK_0 = ISI DIG 0
RETURN
TARA : ; SCAN THE DISPLAYS
TEMP = MASK_3 : GOSUB TABLO
BASAMAK_3 = 0 : PAUSE 1 : BASAMAK_3 = 1
'****************************************************************
'****************************************************************
TEMP = MASK_2 : GOSUB TABLO
BASAMAK_2 = 0 : PAUSE 1 : BASAMAK_2 = 1
'****************************************************************
'****************************************************************
TEMP = MASK_1 : GOSUB TABLO
BASAMAK_1 = 0 : DP = 1 : PAUSE 1 : BASAMAK_1 = 1 : DP = 0
'****************************************************************
'****************************************************************
TEMP = MASK_0 : GOSUB TABLO
BASAMAK_0 = 0 : PAUSE 1 : BASAMAK_0 = 1
RETURN
TABLO : ; TABLE , CONVERTS THE DATAS TO 7 SEGMENT CODE
SELECT CASE TEMP
CASE 0
SEGMENT_A = 1
SEGMENT_B = 1
SEGMENT_C = 1
SEGMENT_D = 1
SEGMENT_E = 1
SEGMENT_F = 1
SEGMENT_G = 0
CASE 1
SEGMENT_A = 0
SEGMENT_B = 1
SEGMENT_C = 1
SEGMENT_D = 0
SEGMENT_E = 0
SEGMENT_F = 0
SEGMENT_G = 0
CASE 2
SEGMENT_A = 1
SEGMENT_B = 1
SEGMENT_C = 0
SEGMENT_D = 1
SEGMENT_E = 1
SEGMENT_F = 0
SEGMENT_G = 1
CASE 3
SEGMENT_A = 1
SEGMENT_B = 1
SEGMENT_C = 1
SEGMENT_D = 1
SEGMENT_E = 0
SEGMENT_F = 0
SEGMENT_G = 1
CASE 4
SEGMENT_A = 0
SEGMENT_B = 1
SEGMENT_C = 1
SEGMENT_D = 0
SEGMENT_E = 0
SEGMENT_F = 1
SEGMENT_G = 1
CASE 5
SEGMENT_A = 1
SEGMENT_B = 0
SEGMENT_C = 1
SEGMENT_D = 1
SEGMENT_E = 0
SEGMENT_F = 1
SEGMENT_G = 1
CASE 6
SEGMENT_A = 1
SEGMENT_B = 0
SEGMENT_C = 1
SEGMENT_D = 1
SEGMENT_E = 1
SEGMENT_F = 1
SEGMENT_G = 1
CASE 7
SEGMENT_A = 1
SEGMENT_B = 1
SEGMENT_C = 1
SEGMENT_D = 0
SEGMENT_E = 0
SEGMENT_F = 0
SEGMENT_G = 0
CASE 8
SEGMENT_A = 1
SEGMENT_B = 1
SEGMENT_C = 1
SEGMENT_D = 1
SEGMENT_E = 1
SEGMENT_F = 1
SEGMENT_G = 1
CASE 9
SEGMENT_A = 1
SEGMENT_B = 1
SEGMENT_C = 1
SEGMENT_D = 1
SEGMENT_E = 0
SEGMENT_F = 1
SEGMENT_G = 1
CASE "-"
SEGMENT_A = 0
SEGMENT_B = 0
SEGMENT_C = 0
SEGMENT_D = 0
SEGMENT_E = 0
SEGMENT_F = 0
SEGMENT_G = 1
CASE "h"
SEGMENT_A = 0
SEGMENT_B = 0
SEGMENT_C = 1
SEGMENT_D = 0
SEGMENT_E = 1
SEGMENT_F = 1
SEGMENT_G = 1
CASE "o"
SEGMENT_A = 0
SEGMENT_B = 0
SEGMENT_C = 1
SEGMENT_D = 1
SEGMENT_E = 1
SEGMENT_F = 0
SEGMENT_G = 1
CASE "b"
SEGMENT_A = 0
SEGMENT_B = 0
SEGMENT_C = 1
SEGMENT_D = 1
SEGMENT_E = 1
SEGMENT_F = 1
SEGMENT_G = 1
CASE " "
SEGMENT_A = 0
SEGMENT_B = 0
SEGMENT_C = 0
SEGMENT_D = 0
SEGMENT_E = 0
SEGMENT_F = 0
SEGMENT_G = 0
END SELECT
RETURN
some register names and label are written in turkish. i tried to comment them to english.
there is no transistors to drive diplays.
if your version is same with my isis , it will work.
all files in attachment.
Bookmarks