經過幾天的調試,終于成功了,自己做個心率計,你也來試試吧。看不懂得有視頻講解哈
單片機源程序如下:
數碼管一部分顯示心跳次數,一部分顯示時間,夠60秒停止計數
心率傳感器電路模擬用的是時鐘信號,設個合適的頻率
程序部分
XINLVGEWEI EQU 35H ;給內存RAM空間中的31H單元起名XINLVGEWEI
XINLVSHIWEI EQU 36H ;給內存RAM空間中的32H單元起名XINLVSHIWEI
XINLVBAIWEI EQU 33H ;給內存RAM空間中的33H單元起名XINLVBAIWEI
MIAO EQU 34H ; 給內存RAM空間中的34H單元起名MIAO
MIAOGEWEI EQU 31H ;給內存RAM空間中的35H單元起名MIAOGEWEI
MIAOSHIWEI EQU 32H ;給內存RAM空間中的36H單元起名MIAOSHIWEI
XINLVSHU EQU 37H ;給37H單元起名XINLVSHU(存儲心跳次數)
ORG 0000H ;復位時程序從此開始
SJMP START ;跳到START進行初始化
ORG 0003H ;外部引腳P3.2中斷入口
AJMP INT0 ;跳轉到標號INT0處(外部中斷服務子程序)
ORG 000BH ;定時器T0中斷入口
AJMP TIMER0 ;跳轉到標號TIMER0處(定時器中斷服務子程序)
ORG 0030H ;初始化程序從30H開始
;-----------------------------初始化-------------------------
START:MOV SP, #60H ;給堆棧指針賦值60H
MOV P0, #0FFH ;讓P0口輸出高電平,小燈熄滅
MOV DPTR,#TAB ;把顯示段碼數據表頭地址賦給DPTR
MOV 30H,#0 ;給30H賦值0,(30H單元存放定時50ms的次數)
MOV XINLVSHU,#0 ;給XINLVSHU賦值0
MOV MIAO,#0 ;給秒賦初始值0
MOV TMOD ,#00000001B;T0工作在定時方式,模式1
MOV TH0,#3CH ;給TH0賦值3CH
MOV TL0,#0B0H ;給TL0賦值B0H
SETB TR0 ;啟動定時器T0開始工作
SETB ET0 ;開定時器T0中斷允許
SETB EX0 ;開外部P3.2引腳中斷
SETB IT0 ;P3.2引腳下降沿產生中斷信號
SETB EA ;開總中斷允許
;------------------------------主程序----------------------
MAIN:CALL CHUFA ;調處理子程序完成除法任務
CALL DISPLAY ;調顯示子程序
SJMP MAIN ;程序跳轉到MAIN處
;-------------------------CHUFA子程序---------------
CHUFA:MOV A, XINLVSHU ;XINLVSHU中的數據拷貝給A
MOV B, #100 ;給寄存器B賦值100
DIV AB ;用A除以B,結果在A中(百位),余數在B中
MOV XINLVBAIWEI, A ;百位的結果放在XINLVBAIWEI中
MOV A , B ;把B中的余數拷貝給A
MOV B, #10 ;給B中賦值10
DIV AB ;用A除以B,結果在A中(十位),余數在B中(個位)
MOV XINLVSHIWEI, A ;A中的數拷貝給XINLVSHIWEI
MOV XINLVGEWEI ,B ;B中的數據拷貝給XINLVGEWEI
MOV A, MIAO ;把秒拷貝個A
MOV B, #10 ;給B中賦值10
DIV AB ;用A除以B,結果在A中(十位),余數在B中(個位)
MOV MIAOSHIWEI, A ;把A(秒的十位)拷貝給MIAOSHIWEI
MOV MIAOGEWEI, B ;把B(秒個位)拷貝給MIAOGEWEI
RET ;子程序返回
全部資料51hei下載地址:
陰極心率計通過.rar
(69.79 KB, 下載次數: 20)
2020-3-23 14:35 上傳
點擊文件名下載附件
測試通過,傾心制作
|