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

📄 e2.asm

📁 基于周立功实验箱设计的键盘控制走马灯方向的源码
💻 ASM
字号:
	PWMH    DATA   30H   //高电平脉冲的个数
	PWM     DATA   31H   //PWM周期
	COUNTER DATA   32H
	TEMP    DATA   33H   

	ORG   0000H
	AJMP  MAIN
	ORG   000BH
	AJMP  INTT0

	ORG   0100H

MAIN:   MOV   SP,#60H   //给堆栈指针赋初值
	      MOV   PWMH,#02H
        MOV   COUNTER,#01H
        MOV   PWM,#15H
        MOV   TMOD,#02H   //定时器0在模式2下工作
        MOV   TL0,#38H    //定时器每200us产生一次溢出
        MOV   TH0,#38H    //自动重装的值
        SETB  ET0         //使能在定时器0中断
        SETB  EA          //使能总中断
        SETB  TR0         //开始计时

KSCAN:  JNB   P1.1,K1CHECK  //扫描KEY1
        JNB   P1.2,K2CHECK  //扫描KEY2,如果按下KEY2就跳转到KEY2处理
        SJMP  KSCAN

K1CHECK:
        JB    P1.1,K1HANDLE  //去抖动,按下KEY1后跳至KEY1处理
        SJMP  K1HANDLE

K1HANDLE:
        MOV   A,PWMH
        CJNE  A,PWM,K1H0   //判断是否到达上边界
        SJMP  KSAN         //是则不进行任何操作

K1H0:   MOV   A,PWMH
        INC   A
        CJNE  A,PWM,K1H1   //如果在加1后到达最大值
        CLR   TR0          //定时器停止
        SETB  P1.0         //P1.0为高电平
        SJMP  K1H2

K1H1:   CJNE  A,#02H,K1H2  //如果加1后到达下边界
        SETB  TR0          //重开定时器

K1H2:   INC   PWMH         //增加占空比
        SJMP  KSAN

K2CHECK:
        JB    P1.2,K2HANDLE  ////去抖动,按下KEY2后跳至KEY2处理
        SJMP  K1HANDLE

K2HANDLE:
        MOV   A,PWMPH
        CJNE  A,#01H,K2H0   //判断是否到达下边界
        SJMP  KSCAN         //是则不进行任何操作

K2H0:   MOV   A,PWMH
        MOV   TEMP,PWM
        DEC   A
        CJNE  A,#01H,K2H1   //如果减1后到达下边界
        CLR   TR0           //定时器停止
        CLR   P1.0          //置P1.0低电平
        SJMP  K2H2

K2H1:   DEC   TEMP
        CJNE  A,TEMP,K2H2   //如果到达上边界
        SETB  TR0           //启动定时器

K2H2:   DEC   PWMH          //降低占空比
        SJMP  KSCAN

INTT0:  PUSH  PSW           //现场保护
        PUSH  ACC
        INC   COUNTER       //计数值加1
        MOV   A,COUNTER
        CJNE  A,PWMH,INTT01 //如果等于高电平脉冲数
        CLR   P1.0          //低

INTT01: CJNE  A,PWM,INTT02  //如果等于周期数
        MOV   COUNTER,#01H  //计数器复位
        SETB  P1.0	        //高
  
INTT02: POP   ACC           //出栈
        POP   PSW
        RETI
        END

⌨️ 快捷键说明

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