⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 05hz.asm

📁 我实验板带的实验程序
💻 ASM
字号:
;变频输出!按p3.2连续输出50hz,1KHZ,1KHZ窄脉冲, 停止。输出口P3.3。
;***************************************************************************
;*  sxj1974@163.com		     (51c51 test web)     www.8951.com     *
;*  Create by :石学军      www.51c51.com 更多例程请登陆网站        	   *
;***************************************************************************
;p3.2 control p1.3 (led)
;p3.4 control p3.3(buzzer)

	org	0000h
	ajmp	main0

     	org   000bh
     	ajmp  timer0
     	org   001bh
    	ajmp  timer1
	org	0030h
MAIN0:
	CLR	21H			;清标志位
        mov 30h,#01h
        mov tmod,#12h			;设定定时器工作方式
        mov ie,#8ah			;开中断
        mov th0,#(256-50)		;设定时初值
        mov tl0,#(256-50)
        mov th1,#high(65536-50000)
        mov tl1,#low(65536-50000)
        mov r0,#00h
main:
	mov	c,p3.2			;检测按键
	jc testp34
	MOV	R6,#200			;设定0.5秒延时
	MOV	R7,#200
    	ajmp tt0
testp34:
        mov c,p3.4			;检测按键
        jc  main
        ajmp    insert
TT0:
	JNB	21H,TT2			;判断灯的状态
tt:
	mov	c,p3.2
	jnc	tt1

	JNB	20H,MAIN		;检测0.5秒时间到否
	CLR	20H	
	AJMP	TT3	
TT2:
	mov	c,p3.2			;检测按键
	jnc	tt2
TT3:
	CPL	21H			;取反灯的状态
	cpl	p1.3
	ajmp	main

TT1:	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	DJNZ	R6,TT
	MOV	R6,#200
	DJNZ	R7,TT
	MOV	R7,#200
	SETB	20H
	AJMP	TT	
insert:
       lcall delay10ms
       mov  c,p3.4		;检测按键
       jc  main
ins1:
       mov c,p3.4
       jnc ins1			;等待键释放
       mov  a,30h		;状态切换
       rl   a
       mov  30h,a
       jb   acc.0,l1
       jb   acc.1,l2
       jb   acc.2,l3
       jb   acc.3,l4
       jb   acc.4,l1
       jb   acc.5,l2
       jb   acc.6,l3
       jb   acc.7,l4
       ajmp main
l1:    mov  r5,#2		;10%占空比,脉冲频率1KHZ
       setb tr0
       clr  tr1
       ajmp l5
l2:    mov  r5,#5		;25%占空比,脉冲频率1KHZ
       setb tr0
       clr  tr1
       ajmp l5
l3:    clr  tr0
       clr  tr1
       setb p3.3		;全为高电平
       ajmp l5
l4:    clr  tr0
       setb tr1
       ajmp l5
l5:    ajmp main

timer0:					;定时器0中断服务程序,产生50US定时
        push acc
        push psw
        mov th0,#(256-50)
        mov tl0,#(256-50)
        inc r0
        mov a,r0
        mov 31h,r5
        cjne a,31h,compend
        cpl  p3.3
        ajmp exit
compend:
        cjne a,#20,exit
        mov  r0,#00h
        cpl  p3.3
exit:
        pop  psw
        pop  acc
        reti
timer1:				;定时器1中断服务程序,产生50mS定时
       push acc
       push psw
       mov  th1,#high(65536-50000)
       mov  tl1,#low(65536-50000)
       cpl  p3.3
       pop  psw
       pop  acc
       reti       
delay10ms:
          mov  40h,#50
ttp:
          mov  41h,#100
          djnz 41h,$
          djnz 40h,ttp
          ret       
	  end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -