Не пойму в чем дело вот код программы:
Код
trisa = %01110011
trisb = %00000000
dig1 var porta.3
dig2 var porta.2
dig3 var porta.7
dig1 = 0
dig2 = 0
dig3 = 0
Portb = $16
vivod:
dig1 = 1
pause 10
dig1 = 0
pause 10
dig2 = 1
pause 10
dig2 = 0
pause 10
dig3 = 1
pause 10
dig3 = 0
pause 10
goto vivod
end
Так вот пауза реальная где то 1 секунду.
Если убрать pause ну чуть быстрее но все ровно я вижу как меняются цифры на индикаторе.
С этой же программой в pic 16f628a все ок я не вижу как меняются цифры и горят все три.
Так то я дилетант и мог где то что то упустить. Ну подумал может что то связано с тактовой частотой.
У меня прописано вот это в конфиге:
Код
__config _INTRC_IO & _WDT_ON & _PWRTE_ON & _LVP_OFF & _CP_OFF & _MCLR_OFF
вроде как и положено врублен внутренний генератор командой _INTRC_IOДобавлено (11.09.2015, 02:44)
---------------------------------------------
проверил если убрать pause то все нормально, но вот в этой проге убрал паузу но все ровно я вижу как меняются числа где то раз в пол секунды, тоесть очень долго.
Где я накосячил?
'6-e RB0
'7-c RB1
'8-dp RB2
'9-d RB3
'10-f RB4
'11-a RB5
'12-g RB6
'13-b RB7
' RA3 dig1
' RA2 dig2
' RA7 dig3
' RA6 вход с датчика сигнал
' 0- $44, 1- $7D, $16, $15, $2D, $85, $84, $5D, $04, $05
Define adc_bits 8
Define ADC_CLOCK 3
Define ADC_SAMPLEUS 50
tempval var byte
LED var portb
dig1 var porta.3
dig2 var porta.2
dig3 var porta.7
dp var portb.2
Temp VAR word
i var byte 'номер горящего индикатора от 0 до 2
n var byte '
warning var porta.1
dig1 = 0 '1 это плюс на RA3 dig1
dig2 = 0 '1 это плюс на RA2 dig2
dig3 = 0 '1 это плюс на RA7 dig3
Init:
trisa = %01110011 'RA7 вых,RA6 вх,RA5 вх,RA4 вх,RA3 вых,RA2 вых,RA1 вх,RA0 вх
trisb = %00000000 'все выходы
ADCON1=%00000010 'RA1 сделал аналогвым входом
vivod: 'вывод значения Temp на экран
adcin 0, tempval
for i = 0 to 2
n = temp dig i
dig1 = 0 '1 это плюс на RA3 dig1
dig2 = 0 '1 это плюс на RA2 dig2
dig3 = 0 '1 это плюс на RA7 dig3
gosub Convrt
if i = 0 then
dig3 = 1
endif
if i = 1 then
dig2 = 1
endif
if i = 2 then
dig1 = 1
endif
'Temp = 168/10
Temp = (6 * tempval - 156)/10
next i
goto vivod
Convrt:
lookup n, [$44,$7D,$16,$15,$2D,$85,$84,$5D,$04,$05], Led
return
end