仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
單片機秒表仿真文件要用proteus8.0以上的版本打開.
所有資料下載:
仿真代碼.7z
(35.4 KB, 下載次數: 58)
2022-12-9 05:11 上傳
點擊文件名下載附件
- ORG 00H
- START:
- CLR P1.7 ;p1.7=0 關閉蜂鳴器
- MOV P0,#00H ;兩位七段數碼管顯示“00”
- JB P3.5,[ DISCUZ_CODE_1 ]nbsp; ;如果按鈕開關S1沒有按下重復執行本行
- CALL FILTER ;如果檢測S1被按下,調FILTER子程序,消除開關的抖動
- JNB P3.5,[ DISCUZ_CODE_1 ]nbsp; ;如果S1沒有放開則等待,放開后執行下一行
- MOV A,#00H ;累加器A=0
- MOV R1,#50 ;計時50秒的計數器
- PRESS:
- MOV P0,A ;輸出至P0,七段數碼管顯示
- MOV R5,#10 ;為延時1秒設定的寄存器初始值
- ADD_1:
- CALL DELAY ;調延時子程序
- DJNZ R5,ADD_1 ;循環10次完成1秒延時
- ADD A,#01H ;計時值加1
- DA A ;十進制調整
- DJNZ R1,PRESS ;判斷是不是到50秒,如果沒有就繼續倒計時
- MOV R1,#6 ;聲音提示計數器
- NOTICE:
- CPL P1.7 ;P1.7反相,蜂鳴器轉換狀態
- CALL DELAY ;調延時子程序
- DJNZ R1,NOTICE ;判斷是否響了3次
- JMP START ;循環
- DELAY: ;本段延時0.1ms
- MOV R6,#200
- D1:
- MOV R7,#248
- DJNZ R7,$
- DJNZ R6,D1
- RET ;延時子程序返回主程序
- FILTER: ;按鈕開關過濾抖動子程序
- MOV R6,#60
- F1: MOV R7,#248
- DJNZ R7,$
- DJNZ R6,F1
- RET ;過濾子程序返回主程序
- END ;程序結束點
復制代碼
|