$map
$regfile = "m328pdef.dat"
$crystal = 1000000
$framesize = 250
$hwstack = 250
$swstack = 250Config Pinc.2 = Input : Reset Portc.2
Config Pinc.3 = Input : Reset Portc.3
Config Pinc.4 = Input : Reset Portc.4
Config Pinc.5 = Input : Reset Portc.5Pin_0 Alias Pinc.2
Pin_1 Alias Pinc.3
Pin_2 Alias Pinc.4
Pin_3 Alias Pinc.5Config Portd = Output
Virtual_port_b Alias Pinb
Virtual_port_c Alias Pinc
Virtual_port_d Alias PindVirtual_pin_0 Alias 2
Virtual_pin_1 Alias 3
Virtual_pin_2 Alias 4
Virtual_pin_3 Alias 5Dim Input_data As Byte
Dim Adress_label(16) As WordAdress_label(1) = Loadlabel(подпрограмма_0) / 2
Adress_label(2) = Loadlabel(подпрограмма_1) / 2
Adress_label(3) = Loadlabel(подпрограмма_2) / 2
Adress_label(4) = Loadlabel(подпрограмма_3) / 2
Adress_label(5) = Loadlabel(подпрограмма_4) / 2
Adress_label(6) = Loadlabel(подпрограмма_5) / 2
Adress_label(7) = Loadlabel(подпрограмма_6) / 2
Adress_label(8) = Loadlabel(подпрограмма_7) / 2
Adress_label(9) = Loadlabel(подпрограмма_8) / 2
Adress_label(10) = Loadlabel(подпрограмма_9) / 2
Adress_label(11) = Loadlabel(подпрограмма_10) / 2
Adress_label(12) = Loadlabel(подпрограмма_11) / 2
Adress_label(13) = Loadlabel(подпрограмма_12) / 2
Adress_label(14) = Loadlabel(подпрограмма_13) / 2
Adress_label(15) = Loadlabel(подпрограмма_14) / 2
Adress_label(16) = Loadlabel(подпрограмма_15) / 2'===============================================================================
'Г Л А В Н Ы Й Ц И К Л
Главный_цикл:
'==============================================================================='===========================================================================
' Время выполнения от NOP до NOP, 79...181 такт, в зависимости от значения переменной "input_data"
'===========================================================================
nopGosub Первый_вариант
nop
'===========================================================================' Время выполнения от NOP до NOP, 79...151 такт, в зависимости от значения переменной "input_data"
'===========================================================================
nopGosub Второй_вариант
nop
'===========================================================================' Время выполнения от NOP до NOP, 40...70 такт, в зависимости от значения переменной "input_data"
'===========================================================================
nopGosub Третий_вариант
nop
'===========================================================================' Время выполнения от NOP до NOP, 89 тактов (не изменяется), не зависит от переменной "input_data"
'===========================================================================
nopGosub Четвертый_вариант
nop
'===========================================================================' Время выполнения от NOP до NOP, 40 тактов (не изменяется), не зависит от переменной "input_data"
'===========================================================================
nop'Gosub Пятый_вариант
nop
Waitms 100
'===============================================================================
Goto Главный_цикл
End
'==============================================================================='===============================================================================
Первый_вариант:
'-------------------------------------------------------------------------------
Input_data.0 = Pin_0
Input_data.1 = Pin_1
Input_data.2 = Pin_2
Input_data.3 = Pin_3If Input_data = 0 Then
Gosub Подпрограмма_0
Elseif Input_data = 1 Then
Gosub Подпрограмма_1
Elseif Input_data = 2 Then
Gosub Подпрограмма_2
Elseif Input_data = 3 Then
Gosub Подпрограмма_3
Elseif Input_data = 4 Then
Gosub Подпрограмма_4
Elseif Input_data = 5 Then
Gosub Подпрограмма_5
Elseif Input_data = 6 Then
Gosub Подпрограмма_6
Elseif Input_data = 7 Then
Gosub Подпрограмма_7
Elseif Input_data = 8 Then
Gosub Подпрограмма_8
Elseif Input_data = 9 Then
Gosub Подпрограмма_9
Elseif Input_data = 10 Then
Gosub Подпрограмма_10
Elseif Input_data = 11 Then
Gosub Подпрограмма_11
Elseif Input_data = 12 Then
Gosub Подпрограмма_12
Elseif Input_data = 13 Then
Gosub Подпрограмма_13
Elseif Input_data = 14 Then
Gosub Подпрограмма_14
Elseif Input_data = 15 Then
Gosub Подпрограмма_15
End If
'-------------------------------------------------------------------------------
Return
'==============================================================================='===============================================================================
Второй_вариант:
'-------------------------------------------------------------------------------
Input_data.0 = Pin_0
Input_data.1 = Pin_1
Input_data.2 = Pin_2
Input_data.3 = Pin_3Select Case Input_data
Case 0 :
Gosub Подпрограмма_0
Case 1 :
Gosub Подпрограмма_1
Case 2 :
Gosub Подпрограмма_2
Case 3 :
Gosub Подпрограмма_3
Case 4 :
Gosub Подпрограмма_4
Case 5 :
Gosub Подпрограмма_5
Case 6 :
Gosub Подпрограмма_6
Case 7 :
Gosub Подпрограмма_7
Case 8 :
Gosub Подпрограмма_8
Case 9 :
Gosub Подпрограмма_9
Case 10 :
Gosub Подпрограмма_10
Case 11 :
Gosub Подпрограмма_11
Case 12 :
Gosub Подпрограмма_12
Case 13 :
Gosub Подпрограмма_13
Case 14 :
Gosub Подпрограмма_14
Case 15 :
Gosub Подпрограмма_15
End Select
'-------------------------------------------------------------------------------
Return
'==============================================================================='===============================================================================
Третий_вариант:
'-------------------------------------------------------------------------------
!in R16 , Virtual_port_c
!clr R17!BST R16 , Virtual_pin_0
!BLD R17 , 0!BST R16 , Virtual_pin_1
!BLD R17 , 1!BST R16 , Virtual_pin_2
!BLD R17 , 2!BST R16 , Virtual_pin_3
!BLD R17 , 3!sts {input_data} , R17
Data_decoder_1:
!cpi R17 , 0
!BReq Decoder_0 'Перейти если равно!cpi R17 , 1
!BReq Decoder_1 'Перейти если равно!cpi R17 , 2
!BReq Decoder_2 'Перейти если равно!cpi R17 , 3
!BReq Decoder_3 'Перейти если равно!cpi R17 , 4
!BReq Decoder_4 'Перейти если равно!cpi R17 , 5
!BReq Decoder_5 'Перейти если равно!cpi R17 , 6
!BReq Decoder_6 'Перейти если равно!cpi R17 , 7
!BReq Decoder_7 'Перейти если равно!cpi R17 , 8
!BReq Decoder_8 'Перейти если равно!cpi R17 , 9
!BReq Decoder_9 'Перейти если равно!cpi R17 , 10
!BReq Decoder_10 'Перейти если равно!cpi R17 , 11
!BReq Decoder_11 'Перейти если равно!cpi R17 , 12
!BReq Decoder_12 'Перейти если равно!cpi R17 , 13
!BReq Decoder_13 'Перейти если равно!cpi R17 , 14
!BReq Decoder_14 'Перейти если равно!cpi R17 , 15
!BReq Decoder_15 'Перейти если равно!rjmp Exit_data_decoder
Decoder_0:
!rcall Подпрограмма_0
!rjmp Exit_data_decoderDecoder_1:
!rcall Подпрограмма_1
!rjmp Exit_data_decoderDecoder_2:
!rcall Подпрограмма_2
!rjmp Exit_data_decoderDecoder_3:
!rcall Подпрограмма_3
!rjmp Exit_data_decoderDecoder_4:
!rcall Подпрограмма_4
!rjmp Exit_data_decoderDecoder_5:
!rcall Подпрограмма_5
!rjmp Exit_data_decoderDecoder_6:
!rcall Подпрограмма_6
!rjmp Exit_data_decoderDecoder_7:
!rcall Подпрограмма_7
!rjmp Exit_data_decoderDecoder_8:
!rcall Подпрограмма_8
!rjmp Exit_data_decoderDecoder_9:
!rcall Подпрограмма_9
!rjmp Exit_data_decoderDecoder_10:
!rcall Подпрограмма_10
!rjmp Exit_data_decoderDecoder_11:
!rcall Подпрограмма_11
!rjmp Exit_data_decoderDecoder_12:
!rcall Подпрограмма_12
!rjmp Exit_data_decoderDecoder_13:
!rcall Подпрограмма_13
!rjmp Exit_data_decoderDecoder_14:
!rcall Подпрограмма_14
!rjmp Exit_data_decoderDecoder_15:
!rcall Подпрограмма_15
!rjmp Exit_data_decoder!nop
Exit_data_decoder:
!nop
'-------------------------------------------------------------------------------
Return
'==============================================================================='===============================================================================
Четвертый_вариант:
'-------------------------------------------------------------------------------
Input_data.0 = Pin_0
Input_data.1 = Pin_1
Input_data.2 = Pin_2
Input_data.3 = Pin_3On Input_data Gosub Подпрограмма_0 , _
Подпрограмма_1 , _
Подпрограмма_2 , _
Подпрограмма_3 , _
Подпрограмма_4 , _
Подпрограмма_5 , _
Подпрограмма_6 , _
Подпрограмма_7 , _
Подпрограмма_8 , _
Подпрограмма_9 , _
Подпрограмма_10 , _
Подпрограмма_11 , _
Подпрограмма_12 , _
Подпрограмма_13 , _
Подпрограмма_14 , _
Подпрограмма_15 , _
'-------------------------------------------------------------------------------
Return
'==============================================================================='===============================================================================
Пятый_вариант:
'-------------------------------------------------------------------------------
nop
'-------------------------------------------------------------------------------
Return
'==============================================================================='===============================================================================
Подпрограмма_0:
'-------------------------------------------------------------------------------
nop
Portd = Input_data
'-------------------------------------------------------------------------------
Return
'==============================================================================='===============================================================================
Подпрограмма_1:
'-------------------------------------------------------------------------------
nop
Portd = Input_data
'-------------------------------------------------------------------------------
Return
'==============================================================================='===============================================================================
Подпрограмма_2:
'-------------------------------------------------------------------------------
nop
Portd = Input_data
'-------------------------------------------------------------------------------
Return
'==============================================================================='===============================================================================
Подпрограмма_3:
'-------------------------------------------------------------------------------
nop
Portd = Input_data
'-------------------------------------------------------------------------------
Return
'==============================================================================='===============================================================================
Подпрограмма_4:
'-------------------------------------------------------------------------------
nop
Portd = Input_data
'-------------------------------------------------------------------------------
Return
'==============================================================================='===============================================================================
Подпрограмма_5:
'-------------------------------------------------------------------------------
nop
Portd = Input_data
'-------------------------------------------------------------------------------
Return
'==============================================================================='===============================================================================
Подпрограмма_6:
'-------------------------------------------------------------------------------
nop
Portd = Input_data
'-------------------------------------------------------------------------------
Return
'==============================================================================='===============================================================================
Подпрограмма_7:
'-------------------------------------------------------------------------------
nop
Portd = Input_data
'-------------------------------------------------------------------------------
Return
'==============================================================================='===============================================================================
Подпрограмма_8:
'-------------------------------------------------------------------------------
nop
Portd = Input_data
'-------------------------------------------------------------------------------
Return
'==============================================================================='===============================================================================
Подпрограмма_9:
'-------------------------------------------------------------------------------
nop
Portd = Input_data
'-------------------------------------------------------------------------------
Return
'==============================================================================='===============================================================================
Подпрограмма_10:
'-------------------------------------------------------------------------------
nop
Portd = Input_data
'-------------------------------------------------------------------------------
Return
'==============================================================================='===============================================================================
Подпрограмма_11:
'-------------------------------------------------------------------------------
nop
Portd = Input_data
'-------------------------------------------------------------------------------
Return
'==============================================================================='===============================================================================
Подпрограмма_12:
'-------------------------------------------------------------------------------
nop
Portd = Input_data
'-------------------------------------------------------------------------------
Return
'==============================================================================='===============================================================================
Подпрограмма_13:
'-------------------------------------------------------------------------------
nop
Portd = Input_data
'-------------------------------------------------------------------------------
Return
'==============================================================================='===============================================================================
Подпрограмма_14:
'-------------------------------------------------------------------------------
nop
Portd = Input_data
'-------------------------------------------------------------------------------
Return
'==============================================================================='===============================================================================
Подпрограмма_15:
'-------------------------------------------------------------------------------
nop
Portd = Input_data
'-------------------------------------------------------------------------------
Return
'===============================================================================
Исследование скорости работы Elseif_SelectCase_Goto
Страница: 1
Сообщений 1 страница 1 из 1
Поделиться12016-10-21 04:11:45
исходник
Страница: 1