首页 > 其他分享 >51 单片机外部中断测试代码例程

51 单片机外部中断测试代码例程

时间:2023-03-29 15:35:27浏览次数:46  
标签:P2 例程 void 51 MOV 单片机 中断

我的公众号目前已搁置(临近注销),所以我将以前所写的文章转移到博客园。

此篇公众号文章创建于 2019-11-18 21:32,内容后期无修改。

不会创建工程的可以跳转:Keil C51 工程的创建(新手向)

例程可能只适用于我购买的单片机开发板,并不完全适合所有 51 单片机,使用测试例程前请检查该程序是否和您的单片机符合,若不符合请根据您的单片机具体情况更改程序。

例程效果:触发外部中断 0 (P3.2) 后,低四位 LED 灯与高四位 LED 灯状态取反。

C 语言代码

// 实现现象:下载程序后按下 K3 按键可以对灯状态取反。

#include "reg52.h"             // 此文件中定义了单片机的一些特殊功能寄存器

typedef unsigned int u16;     // 对数据类型进行声明定义
typedef unsigned char u8;

sbit k3 = P3^2;              // 定义按键 K3

// 延时 15ms 函数
void delay() {
    int i = 15000;
    while( i-- );
}

// 主函数
void main(void) {
    P2 = 0xf0;

    // 设置 INT0
    IT0 = 1;    // 跳变沿出发方式(下降沿)
    EX0 = 1;    // 打开 INT0 的中断允许
    EA = 1;     // 打开总中断

    while(1);
}

// 外部中断 0 的中断函数
void Int0() interrupt 0 {
    delay();     // 延时消抖

    if( k3 == 0 ) P2 =~ P2; // 确认按键按下
}

汇编代码

      ORG 0000H
      AJMP MAIN
      ORG 0003H        ; INT0 中断入口
      AJMP WBI         ; 转中断服务程序
      ORG 0030H
MAIN: MOV P2, #0F0H    ; 低四位灯亮
      SETB IT0         ; 边沿触发中断
      SETB EX0         ; 允许外中断 0 中断
      SETB EA          ; 打开中断开关
WAIT: AJMP WAIT        ; 等待中断
WBI:  ACALL DELAY      ; 调用延时
      JNB P3.2, START
ENDED:RETI             ; 从中断服务程序返回
START:MOV A, P2
      SWAP A           ; 交换 P2
      MOV P2, A
      AJMP ENDED       ; 结束中断
DELAY:MOV R0, #80H     ; 外循环 128 次
DL2:  MOV R1, #19H     ; 内循环 25 次
DL1:  NOP
      NOP
      DJNZ R1, DL1
      DJNZ R0, DL2
      RET
      END

标签:P2,例程,void,51,MOV,单片机,中断
From: https://www.cnblogs.com/zhangxiaochn/p/17269106.html

相关文章

  • ctfshow web入门 文件上传 web151-160
    web151经典前端绕过web152简单后端绕过从web153开始,需使用.user.ini从web154开始,对文件内容进行黑名单过滤每个关卡会累计前面关卡的限制重点:了解前后端......
  • ASEMI代理NXP汽车芯片MMA8451QR1
    编辑-ZMMA8451QR1是一款智能、低功耗、三轴、电容、微机械加工,具有14位分辨率的加速度计。这个加速度计装有嵌入式功能,具有灵活的用户可编程选项,可配置为两个中断引脚。嵌......
  • S2 - Lesson 51 - Reward for virtual
     Content RewardforvirtualMyfriend,Hugh,hasalwaysbeenfat,butthingsgotsobadrecentlythathedecidedtogoonadiet.Hebeganhisdietaweek......
  • 单片机课程设计——PWM电机调速
    文章目录一、实物展示二、电路设计三、流程图展示五、资源链接四、原件清单一、实物展示PWM调速电机二、电路设计三、流程图展示五、资源链接单片机课程设计-直流电机控制......
  • P1251 餐巾计划问题
    一个餐厅在相继的N天里,每天需用餐巾。假设第i天需要A[i]块餐巾(i=1,2,...,N)。餐厅可以购买新的餐巾,每块餐巾的费用为p分;或者把旧餐巾送到快洗部,洗一块需m......
  • C51_定时器
    关于定时器和延时函数:延时要占用CPU资源啊,定时器计时过程不影响CPU的运行,计时完毕通过中断通知CPU处理代码。关于芯片内部的定时器资源:  关于定时器工作原理: ......
  • 递归 Problem N:Bitset(HDU 2051)
    ProblemNTimeLimit:1000/1000ms(Java/Other)   MemoryLimit:32768/32768K(Java/Other)TotalSubmission(s):3   AcceptedSubmission(s):1ProblemDescr......
  • PAT Basic 1051. 复数乘法
    PATBasic1051.复数乘法1.题目描述:复数可以写成$(A+Bi)$的常规形式,其中\(A\)是实部,\(B\)是虚部,\(i\)是虚数单位,满足\(i^2=−1\);也可以写成极坐标下的指数形式$......
  • SPI通信协议及基于Arduino的SPI通信例程
    一、SPI通信协议介绍SPI通信协议(SerialPeripheralInterface)是一种同步串行通信协议,由Motorola公司在1980年代初开发。SPI协议常用于单片机、嵌入式系统和外围设备之间的通......
  • 代码随想录Day8-Leetcode344.反转字符串 II,541. 反转字符串II ,剑指Offer 05.替换空格
    344.反转字符串题目链接:https://leetcode.cn/problems/reverse-string明显的双指针/***@param{character[]}s*@return{void}Donotreturnanything,modif......