скачать рефераты

скачать рефераты

 
 
скачать рефераты скачать рефераты

Меню

Разработка цифрового измерителя кровяного давления на микроконтроллере MC68HC908JL3 скачать рефераты

158

159 ;-------------------------------------------------

160

EC9A [05] 4E8B92 161 mov upress,cmp1

162

163 ;- Процедура ожидания окончания накачки манжеты --

164

165 ;- Задержка 0.7 секунды с индикацией текущего давления --------

166

167 loop:

EC9D [04] 6E0093 168 mov #$0,del

169 loop2:

ECA0 [01] 4F 170 clra

ECA1 [04] C7FFFF 171 sta $ffff ;Сброс WDOG

172 loop1:

ECA4 [01] 4A 173 deca

ECA5 [03] 26FD 174 bne loop1 ;Если аккумулятор=0 то

переход на loop1

ECA7 [05] 4E8B8C 175 mov upress,udav ;код напряжения с датчика заносим в udav

ECAA [03] 450000 176 ldhx #$0

ECAD [05] CDEE74 177 jsr VOLTS_PRESSURE_RET ;Вызов подпрограммы перекодировки напряжение в давление

ECB0 [05] 4E8E8F 178 mov dav,y

ECB3 [05] CDEE85 179 jsr BCD_RET

ECB6 [04] 6E0483 180 mov #$04,adres ;занести адрес начала индикации

ECB9 [05] CDEEC1 181 jsr IND_RET

ECBC [04] 3A93 182 dec del

ECBE [03] 26E0 183 bne loop2 ;Если del=0 то переход на loop2

ECC0 [05] 069104 184 brset 3,bitf1,lop ;Если 3 бит=0 то задержка происходит снова

ECC3 [04] 1691 185 bset 3,bitf1 ;Установить 3 бит в 1

ECC5 [03] 20D6 186 bra loop ;Переход на loop

187 lop:

ECC7 [04] 1789 188 bclr 3,bitf ;Сбросить 3 бит в 1

189

190 ;-------------------------------------------------

ECC9 [04] C7FFFF 191 sta $ffff

ECCC [03] B68B 192 lda upress ;Загружаем upress в аккумулятор для сравнения

ECCE [03] B192 193 cmp cmp1 ;с cmp1

ECD0 [03] 2502 194 blo ampmet ;Если А>cmp1, то

накачка манжеты всё ещё идет

ECD2 [03] 20C9 195 bra loop ;поэтому переходим на loop

196

197 ;------- Определение амплитуды -------------------

198

тонометр.asm Assembled with CASM08Z 25.02.03 9:58:45 PAGE 5

199 ampmet:

ECD4 [04] C7FFFF 200 sta $ffff

ECD7 [04] 1089 201 bset 0,bitf ;Устанавливаем аналоговый вход РТВ1

ECD9 [04] 6E3023 202 mov #$30,TMODH ;Инициализация

таймера, период счёта до 12499

ECDC [04] 6ED324 203 mov #$d3,TMODL ; частота тактирования 125000 Гц

ECDF [04] 6E4320 204 mov #$43,TSC ;Запуск таймера

205 dvbm:

ECE2 [04] C7FFFF 206 sta $ffff

ECE5 [05] 0A8902 207 brset 5,bitf,rm ;Если цикл продолжается больше 5 секунд

ECE8 [03] 2003 208 bra m55 ;то выводим сообщение об ошибки

209 rm:

ECEA [03] CCEDFC 210 jmp rorm

211 m55:

ECED [03] B68A 212 lda upress1

ECEF [03] B194 213 cmp por ;Сраниваем upress1 c порогом por

ECF1 [03] 25EF 214 blo dvbm ;Если upress1<por то переходим на dvbm

ECF3 [03] 3F95 215 clr ovsec ;Сброс OVsec

ECF5 [05] 4E8A96 216 mov upress1,cmpad ;-----------------------------

217 loopamp:

ECF8 [04] C7FFFF 218 sta $ffff ;-----------------

ECFB [04] 1989 219 bclr 4,bitf ;-----------------

ECFD [05] 0989FD 220 brclr 4,bitf,$ ;Идентификация

амплитуды

ED00 [03] B68A 221 lda upress1 ;-----------------

ED02 [03] B196 222 cmp cmpad ;-----------------

ED04 [03] 22F2 223 bhi loopamp ;Если upress1>cmpad

то переходим на loopamp

224

225 ;---------- Сброс и перезапуск таймера -----------

226

ED06 [04] 1A20 227 bset 5,TSC

ED08 [04] 1820 228 bset 4,TSC

ED0A [04] 6E4320 229 mov #$43,TSC

230

231 ;-------------------------------------------------

232

ED0D [05] 4E9697 233 mov cmpad,amp2 ;В amp2 находится значение амплитуды

ED10 [04] 1189 234 bclr 0,bitf ;Устанавливаем аналоговый вход РТВ0

ED12 [04] 1789 235 bclr 3,bitf ;Обнуляем бит СОСО1

ED14 [05] 0789FD 236 brclr 3,bitf,$ ;Если СОСО1=0 то

зациклеваемся

ED17 [05] 4E8B8C 237 mov upress,udav ;Код напряжения с

тонометр.asm Assembled with CASM08Z 25.02.03 9:58:45 PAGE 6

датчика в udav

ED1A [04] 1089 238 bset 0,bitf ;Устанавливаем

аналоговый вход РТВ1

ED1C [04] 3C90 239 inc pulse ;В pulse кол-во

амплитуд

ED1E [03] B697 240 lda amp2

ED20 [03] B198 241 cmp amp1

ED22 [03] 220B 242 bhi proim ;Если amp2>amp1 то

переход на proim

ED24 [05] 4E98A4 243 mov amp1,pmem1 ;-----------------

ED27 [05] 4E9798 244 mov amp2,amp1 ;Меняем местами

amp2 с amp1

ED2A [05] 4EA497 245 mov pmem1,amp2 ;-----------------

ED2D [04] 1E89 246 bset 7,bitf ;Устанавливаем в 1

бит cb

247

248 ;--- Процедура вычисления производной амплитуды --

249 proim:

ED2F [04] C7FFFF 250 sta $ffff

ED32 [05] 00913E 251 brset 0,bitf1,mtime ;Если вход в

процедуру 2-ой раз то переход на mtime

ED35 [04] 1091 252 bset 0,bitf1 ;Устанавливаем sb в 1

ED37 [03] BE99 253 ldx sec

ED39 [02] A60A 254 lda #!10

ED3B [05] 42 255 mul ;Умножаем sec на 10

ED3C [01] 8C 256 clrh

ED3D [01] 5F 257 clrx

ED3E [03] BB9A 258 add sec10 ;Результат умножения

складываем с sec10,

259 ;получаем время импульса

ED40 [03] B79B 260 sta time1 ;Время импульса

заносим в time1

261 cbm:

ED42 [05] 0F8908 262 brclr 7,bitf,perem ;Если amp2 и amp1

менялись местами то

ED45 [04] 1F89 263 bclr 7,bitf ;меняем их обратно

ED47 [05] 4E97A4 264 mov amp2,pmem1 ;-------------------

ED4A [05] 4E9897 265 mov amp1,amp2 ;-------------------

266 perem:

ED4D [05] 4E9798 267 mov amp2,amp1 ;amp2 заносим в amp1

268

269 ;- Задержка с индикацией текущего давления 0.3 секунды ---------------------;

270

271

ED50 [04] 6E0093 272 mov #$0,del

273 loop20:

ED53 [01] 4F 274 clra

ED54 [04] C7FFFF 275 sta $ffff ;Сброс WDOG

276 loop11:

ED57 [01] 4A 277 deca

тонометр.asm Assembled with CASM08Z 25.02.03 9:58:45 PAGE 7

ED58 [03] 26FD 278 bne loop11

ED5A [05] 4E8B8C 279 mov upress,udav

ED5D [03] 450000 280 ldhx #$0

ED60 [05] CDEE74 281 jsr VOLTS_PRESSURE_RET;Вызов подпрограммы перекодировки напряжение в давление

ED63 [05] 4E8E8F 282 mov dav,y

ED66 [05] CDEE85 283 jsr BCD_RET

ED69 [04] 6E0483 284 mov #$04,adres ;занести адрес начала индикации

ED6C [05] CDEEC1 285 jsr IND_RET

ED6F [04] 3A93 286 dec del

ED71 [03] 26E0 287 bne loop20

288

289

290

;---------------------------------------------

293 mtime:

ED73 [04] C7FFFF 294 sta $ffff

ED76 [03] BE99 295 ldx sec

ED78 [02] A60A 296 lda #!10

ED7A [05] 42 297 mul ;sec умножаем на 10

ED7B [03] BB9A 298 add sec10 ;sec10+результат

умножения

ED7D [05] 039108 299 brclr 1,bitf1,time2m ;Если pb=0 то

переходим на time2m

ED80 [03] B79B 300 sta time1 ;Время импульса в

time1

ED82 [03] B09C 301 sub time2 ;Вычитаем из

time1,time2

ED84 [04] 1391 302 bclr 1,bitf1 ;Обнуляем pb

ED86 [03] 2006 303 bra raznom

304 time2m:

ED88 [03] B79C 305 sta time2 ;Время импульса в

time2

ED8A [03] B09B 306 sub time1 ;Вычитаем из

time2,time1

ED8C [04] 1291 307 bset 1,bitf1 ;Устанавливаем pb

308 raznom:

ED8E [03] B79D 309 sta time3 ;Разность времени в

Time3

ED90 [03] B697 310 lda amp2 ;-------------------

------

ED92 [03] B098 311 sub amp1 ;Вычисляем разность амплитуд рез. в аккумуляторе

ED94 [02] AE0A 312 ldx #!10 ;Разность амплитуд

умножаем на 10

ED96 [05] 42 313 mul ;-------------------

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

ED97 [03] BFA4 314 stx pmem1

ED99 [04] 55A4 315 ldhx pmem1

ED9B [03] BE9D 316 ldx time3

ED9D [07] 52 317 div ;Разность амплитуд умноженная на 10 делим на time3

318 ;в результате получаем производную амплитуд

319

тонометр.asm Assembled with CASM08Z 25.02.03 9:58:45 PAGE 8

320 ;--------------------- Процедура определения

давления ----------------------------------;

321

ED9E [05] 049109 322 brset 2,bitf1,pr2m ;Если qb=1 то

переходим на pr2m

EDA1 [03] B19E 323 cmp pr1 ;pr1 - порог для

систолического давления

EDA3 [03] 2505 324 blo pr2m ;Если производная

меньше pr1 то переход на pr2m

EDA5 [05] 4E8C9F 325 mov udav,sis ;Заносим значение

давления в sis

EDA8 [04] 1489 326 bset 2,bitf ;Устанавливаем qb в

1

327 pr2m:

EDAA [04] C7FFFF 328 sta $ffff

EDAD [03] B1A0 329 cmp pr2 ;pr2 - порог для

диастолического давления

EDAF [03] 2591 330 blo cbm ;Если производная

меньше pr2 то переход на cbm

EDB1 [05] 4E8CA1 331 mov udav,dia ;Значение давления

заносим в dia

EDB4 [02] A600 332 lda #!0

EDB6 [03] B19F 333 cmp sis

EDB8 [03] 2342 334 bls rorm ;Если sis=<0 то

переходим на rorm

EDBA [02] A63C 335 lda #!60 ;Вычисляем усреднённое значение пульса

EDBC [03] BE99 336 ldx sec ;-----------------

EDBE [07] 52 337 div ;-----------------

EDBF [03] BE90 338 ldx pulse ;-----------------

EDC1 [05] 42 339 mul ;-----------------

EDC2 [03] B7A2 340 sta pul ;-----------------

341

342 ;--------------------- Индикация давления и пульса

-----------------------------------;

343

EDC4 [04] C7FFFF 344 sta $ffff

EDC7 [05] 4E9F8C 345 mov sis,udav ;Вывод систолического давления

EDCA [05] CDEE74 346 jsr VOLTS_PRESSURE_RET ;Вызов

подпрограммы перекодировки напряжение в давление

EDCD [05] 4E8E8F 347 mov dav,y

EDD0 [05] CDEE85 348 jsr BCD_RET

EDD3 [04] 6E0483 349 mov #$04,adres ;занести адрес начала индикации

EDD6 [05] CDEEC1 350 jsr IND_RET

351

EDD9 [05] 4EA18C 352 mov dia,udav ;Вывод диастолического давления

EDDC [05] CDEE74 353 jsr VOLTS_PRESSURE_RET ;Вызов

подпрограммы перекодировки напряжение в давление

EDDF [05] 4E8E8F 354 mov dav,y

EDE2 [05] CDEE85 355 jsr BCD_RET

тонометр.asm Assembled with CASM08Z 25.02.03 9:58:45 PAGE 9

EDE5 [04] 6E4483 356 mov #$44,adres ;занести адрес начала индикации

EDE8 [05] CDEEC1 357 jsr IND_RET

358

EDEB [04] C7FFFF 359 sta $ffff

EDEE [05] 4EA28F 360 mov pul,y ;Вывод пульса

EDF1 [05] CDEE85 361 jsr BCD_RET

EDF4 [04] 6E4D83 362 mov #$4d,adres ;занести адрес начала индикации

EDF7 [05] CDEEC1 363 jsr IND_RET

EDFA [03] 2022 364 bra exitdav

365 rorm:

EDFC [04] 1501 366 bclr 2,PTB

EDFE [04] 1701 367 bclr 3,PTB

EE00 [04] 6E0103 368 mov #$1,PTD ;Очистка дисплея

EE03 [04] 6E1284 369 mov #!18,bcd100 ; "O"

EE06 [04] 6E1385 370 mov #!19,bcd10 ; "Ш"

EE09 [04] 6E0C86 371 mov #!12,bcd1 ; "И"

EE0C [04] 6E0583 372 mov #$5,adres

EE0F [05] CDEEC1 373 jsr IND_RET

EE12 [04] 6E1484 374 mov #!20,bcd100 ; "Б"

EE15 [04] 6E1585 375 mov #!21,bcd10 ; "К"

EE18 [04] 6E0E86 376 mov #!14,bcd1 ; "А"

EE1B [05] CDEEC1 377 jsr IND_RET

378 exitdav:

379

Страницы: 1, 2, 3, 4