51匯編-時器T0模式2進行定時以及計數器示例


當P3.4引腳上的電平發生負跳變時,從P1.0輸出一個500us的同步脈沖

;-----------------
;Title:當P3.4引腳上的電平發生負跳變時,從P1.0輸出一個500us的同步脈沖
;Authors:DDH-qiu
;Date:2022-4-5
;Abstract:定時器T0模式2進行定時以及計數器的使用
;-----------------
ORG 0000H                               ;偽指令下一條指令的起始地址0000H
	LJMP START                      ;LJMP長跳轉到START標號
	ORG 0080H			;偽指令下一條指令的起始地址為0080H
		START:MOV TMOD,#06H     ;START標號,設置定時器(0000 0110)選擇定時器0工作方式為計數器,工作模式2
		MOV TH0,#0FFH		;定時器初始化TL0高8位
		MOV TL0,#0FFH		;定時器初始化TH0低8位(工作模式2要使THi=TLi)
		SETB TR0		;將TR0置1,啟動計數器
		LOOP1:JBC TF0,PTF01	;判斷定時器T0溢出標志位,JBC判位變量並清0轉移指令
					;判斷TF0如果TF0等於1,就跳轉(並且清零TF0),如果等於0就順序執行
		SJMP LOOP1		;SJMP相對轉移(短轉移)指令,轉移到LOOP1標號(實現計數等待)
		PTF01:CLR TR0		;PTF01標號,CLR(清零)將TR0標志位清零,停止計數功能
		MOV TMOD,#02H		;將定時器T0設置為定時工作方式,工作模式2
		MOV TH0,#06H		;定時器初始化高8位
		MOV TL0,#06H		;定時器初始化低8位
		CLR P1.0		;將P1.0位清零(置為低電平)
		SETB TR0		;將TR0位置1,啟動定時
		LOOP2:JBC TF0,PTF02	;LOOP2標號,判斷定時器T0溢出標志位,JBC判位變量並清0轉移指令
					;判斷TF0,如果TF0等於1,就跳轉到PTF02(並清零TF0),如果等於0就順序執行
		SJMP LOOP2		;SJMP相對轉移(短轉移)指令,轉移到LOOP2標號中(實現定時等待)
		PTF02:SETB P1.0		;將P1.0置1(置為高電平)
		CLR TR0			;清零TR0,停止定時器T0定時
		SJMP START		;相對轉移(短跳轉)跳轉到START標號重復執行計數一次定時500us的功能
		END	


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM