Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Thermometer(ElkinAlexanderCoorse.09-V1.2012).docx
Скачиваний:
30
Добавлен:
28.03.2015
Размер:
734.51 Кб
Скачать
  1. Технология отладки программы

В качестве основной среды для написания кода программы и его отладки я использовал приложение MPLABIDE, являющимся стандартным средством разработки кода для микроконтроллеровPIC. Так как приложение имеет только встроенный компилятор ассемблерного кода, мне пришлось использовать внешний компилятор кода на языке Си.

Я использовал компилятор кода на языке Си HI-TECHCCompiler.

Для синхронизации приложения написания кода и компилятора при создании проекта в мастере проектов указал в качестве приложения компиляции HI-TECHCCompiler.

Так же в мастере была возможность выбора используемого микроконтроллера и настройки его начальной конфигурации. Например, указание частоты тактового генератора.

Ниже приведен фрагмент листинга программы, полученного на этапе компиляции

--------------------------------------------------------------------------------------------------------------

1128 ;; *************** function _ReadByte *****************

1129 ;; Defined at:

1130 ;; line 166 in file "E:\Thermometer Coorse\MPLAB IDE Project\thermometer.c"

1131 ;; Parameters: Size Location Type

1132 ;; None

1133 ;; Auto vars: Size Location Type

1134 ;; inputByte 1 3[COMMON] unsigned char

1135 ;; i 1 2[COMMON] unsigned char

1136 ;; value 1 1[COMMON] unsigned char

1137 ;; Return value: Size Location Type

1138 ;; 1 wreg unsigned char

1139 ;; Registers used:

1140 ;; wreg, status,2, status,0, pclath, cstack

1141 ;; Tracked objects:

1142 ;; On entry : 40/20

1143 ;; On exit : 60/0

1144 ;; Unchanged: FFF9F/0

1145 ;; Data sizes: COMMON BANK0 BANK1 BANK2

1146 ;; Params: 0 0 0 0

1147 ;; Locals: 3 0 0 0

1148 ;; Temps: 0 0 0 0

1149 ;; Totals: 3 0 0 0

1150 ;;Total ram usage: 3 bytes

1151 ;; Hardware stack levels used: 1

1152 ;; Hardware stack levels required when called: 1

1153 ;; This function calls:

1154 ;; _Delay10Microsecond

1155 ;; This function is called by:

1156 ;; _main

1157 ;; This function uses a non-reentrant model

1158 ;;

1159 06A4 _ReadByte:

1160

1161 ;thermometer.c: 167: unsigned char i;

1162 ;thermometer.c: 168: unsigned char inputByte;

1163 ;thermometer.c: 169: unsigned char value;

1164 ;thermometer.c: 170: for (i = 0; i < 8; i++)

1165

1166 ; Regs used in _ReadByte: [wreg+status,2+status,0+pclath+cstack]

1167 06A4 01F2 clrf ReadByte@i

1168 06A5 l1250:

1169

1170 ;thermometer.c: 171: {

1171 ;thermometer.c: 173: PORTA=0x00;

1172 06A5 1283 bcf 3,5 ;RP0=0, select bank0

1173 06A6 0185 clrf 5 ;volatile

1174

1175 ;thermometer.c: 174: TRISA=0xFD;

1176 06A7 30FD movlw 253

1177 06A8 1683 bsf 3,5 ;RP0=1, select bank1

1178 06A9 0085 movwf 5 ;volatile

1179

1180 ;thermometer.c: 175: TRISA=0xFF;

1181 06AA 30FF movlw 255

1182 06AB 0085 movwf 5 ;volatile

1183 06AC 0064 clrwdt ;#

1184 06AD 0000 nop ;#

1185 06AE 0000 nop ;#

1186

1187 ;thermometer.c: 184: value=PORTA;

1188 06AF 1283 bcf 3,5 ;RP0=0, select bank0

1189 06B0 0805 movf 5,w ;volatile

1190 06B1 00F1 movwf ReadByte@value

1191

1192 ;thermometer.c: 185: if (value & 0x03)

1193 06B2 3903 andlw 3

1194 06B3 1903 btfsc 3,2

1195 06B4 2EB7 goto l372

1196

1197 ;thermometer.c: 186: {

1198 ;thermometer.c: 188: inputByte = (inputByte >> 1) | 0x80;

1199 06B5 1403 setc

1200 06B6 2EB8 goto L17

1201 06B7 l372:

1202 ;thermometer.c: 189: }

1203

1204

1205 ;thermometer.c: 190: else

1206 ;thermometer.c: 191: {

1207 ;thermometer.c: 192: inputByte = inputByte >> 1;

1208 06B7 1003 clrc

1209 06B8 L17:

1210 06B8 0CF3 rrf ReadByte@inputByte,f

1211

1212 ;thermometer.c: 193: }

1213 ;thermometer.c: 194: Delay10Microsecond(6);

1214 06B9 3006 movlw 6

1215 06BA 2654 fcall _Delay10Microsecond

1216 06BB 0AF2 incf ReadByte@i,f

1217 06BC 3008 movlw 8

1218 06BD 0272 subwf ReadByte@i,w

1219 06BE 1C03 skipc

1220 06BF 2EA5 goto l1250

1221

1222 ;thermometer.c: 195: }

1223 ;thermometer.c: 196: return(inputByte);

1224 06C0 0873 movf ReadByte@inputByte,w

1225 06C1 0008 return

1226 06C2 __end_of_ReadByte:

1227

1228 psect text172

1229 06C2 __ptext172:

1230 ;; =============== function _ReadByte ends ============

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]