外部中断、定时中断、串口中断C51程序

发布者:Xiaohan521最新更新时间:2016-11-17 来源: eefocus关键字:外部中断  定时中断  串口中断  C51程序 手机看文章 扫描二维码
随时随地手机看文章

/********************************
 文件所用资源
1.外部中断0、1
  定时中断0、1
  串口中断
2.端口:P3.0,P3.1,P3.3,P3.4,P3.5
********************************/
sfr ISP_CONTR = 0xe7;
/*************************** 
 外部中断0服务子程序
****************************/
/*void Int0() interrupt 0
{   
}*/  
/***************************
 定时中断0服务子程序
****************************/
/*void timer0() interrupt 1
{   
}*/ 
/***************************
 外部中断1服务子程序
****************************/
/*void Int1() interrupt 2 
{   
}*/
/***************************
 自动ISP功能函数
***************************/
void isp_check(unsigned char tmp)
{
    static isp_counter=0;
 unsigned int i;
    unsigned char code isp_comm[16]=
 {0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef,0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef};
    if(tmp != isp_comm[isp_counter++]) 
 {
     isp_counter = 0;  
     return;
    }
    else if (isp_counter > 15) 
 {
        EA = 0;     
        for(i=0;i<5000;i++);
        ISP_CONTR = 0x60;  //软复位进入ISP下载模式   
    }   
}
/***************************
串口中断服务子程序
****************************/  
void serial () interrupt 4 

    if (RI) 
 {  
  RI = 0 ; 
        isp_check(SBUF);      
    }

/**************************
 串口发送一个字符 
**************************/
void com_send_dat(unsigned char dat) 

    SBUF=dat; 
 while (TI== 0); 
 TI= 0 ; 

/**************************
   串口初始化 
**************************/
void init_com( void ) 

 SCON=0x50 ;   //UART为模式1,8位数据,允许接收
    TMOD|=0x20 ;  //定时器1为模式2,8位自动重装
 TH1=0xfa ;     //波特率:19200 晶振="22.1184MHz" 
 TL1=0xfa;
 PCON|=0x80;  //SMOD=1;波特率加倍;   
   TR1 = 1 ;       //启动定时器1 
 ES=1;      //开串口中断

/**************************
   定时器0初始化 
**************************/
void init_timer0( void ) 

    TMOD|=0x02;  //定时器0为模式1,16位计数结构
 TH0=0xa0 ;      
 TL0=0xa0;
   //TR0=1;        //启动定时器0
 ET0=1;   //开定时中断0
}

关键字:外部中断  定时中断  串口中断  C51程序 引用地址:外部中断、定时中断、串口中断C51程序

上一篇:M16延时函数
下一篇:ATmega8/16的AD转换实验

推荐阅读最新更新时间:2024-03-16 15:21

单片机的定时中断寄存器
中断是为使单片机具有对外部或内部随机发生的事件进行处理而设置的。51单片机有5种中断源,即有5种对应的情况发生时会使单片机去处理中断程序(中断函数)。 此篇主要整理定时器中断笔记。采用定时器中断会涉及中断寄存器,定时器/计数器相关寄存器(TCON,TMOD),中断函数等知识点。 其中,中断寄存器,定时器/计数器相关寄存器本身或者相关位用来做初始化,中断函数的内容主要是体现发生中断后所需要的操作(在中断函数内写代码)。 1.中断允许寄存器IE 图1.中断寄存器IE 中断寄存器用来设定各个中断源的打开和关闭,IE在特殊功能寄存器中,字节地址为A8H,位地址(由低位到高位)分别是A8H~AFH,该寄存器运行位寻址
[单片机]
单片机的<font color='red'>定时</font>器<font color='red'>中断</font>寄存器
c51写的93C46的读写程序
#include reg52.h sbit CS=P2^7; sbit SK=P2^6; sbit DI=P2^5; sbit DO=P2^4; /* extern unsigned char ReadChar(unsigned char address); extern void WriteChar(unsigned char address,unsigned char InData); extern void ReadString(unsigned char data *RamAddress,unsigned char RomAddress,unsigned char Number); extern void WriteStr
[单片机]
C51单片机的PID程序编写
//主程序====================================================== #include “Main.h” #include “PID_f1.h” /* 。..。..。..。..。..。..。..。..。..。..。..。..。..。..。..。..。..。..。..。..。.. */ /* 。..。..。..。..。..。..。..。..。..。..。..。..。..。..。..。..。..。..。..。..。.. */ void main(void) { float x,y,z; while(1) { x = PID_Control(y,z); } } //PID子程序=====
[单片机]
定时中断程序-AVR STUDIO6-ATMEGA88PA
#include avr/io.h #include avr/interrupt.h unsigned int CNT = 0; void timer0_init() { TCCR0A = 0x00; //普通模式 TCCR0B = 0x00; //停止计数 TCNT0 = 0xFA; //计数初值,为了单步时能快点计数溢出,就用0xFA作初值了 TIMSK0 = 0x01; //计数溢出使能 } int main(void) { timer0_init(); TCCR0B = 0x01; //计数频率=系统时钟频率 sei(); //开启全局中断 while(1) { ;//TODO
[单片机]
PIC16F877异步串口中断探析
PIC16F877单片机的异步串口中断程序: #include pic.h #define uchar unsigned char #define uint unsigned int __CONFIG(0x3B31); void init(); void main() { init(); // TXREG=0x31; //发送 while(!TRMT); //发送结束退出 while(1); } void init() { TRISD = 0; PORTD = 0; TRISC = 0x80; //RX方向必须为输出.或者:TRISC|= 0xC0; TXSTA=0x24; //发送状态寄存器:
[单片机]
Cortex-M3 (NXP LPC1788)之外部中断操作
要使用LPC1788的外部中断,要进行两部分的操作。由于外部中断的管脚采用I/O复用的形式,显然我们首先要对管脚进行配置,使其工作在外部中断输入的模式。其次,我们需要配置中断相关的寄存器包括中断使能以及中断的触发方式等。 由于我们使用的是外部中断0,查阅数据手册,其GPIO管脚为P2_10,为此我们设置IOCON_P2_10寄存器的FUNC字段,设置成001即为EINT0模式。 配置完引脚后,还需要继续配置具体的中断功能。我们需要打开中断使能,设置ISER相应位;还要配置中断的触发方式如电平触发和边沿触发,相关寄存器为EXTMODE和EXTPOLAR;中断触发以后会将外部中断标志寄存器EXTINT相应位置位,这将会向
[单片机]
Cortex-M3 (NXP LPC1788)之<font color='red'>外部中断</font>操作
合泰单片机外部中断程序
;;内容:按下PA3接的按键进中断LED灯左移一位 ;LED接法PD口 ;源码下载:http://www.51hei.com/f/htwzd.rar ;1.开中断 ;2.中断中防抖 include HT66F50.inc ORG 0000H JMP A1 ORG 04H ;外部中断0入口地址 JMP ZD01 ; ORG 30H ; A1: MOV A,00000000B ; MOV PRM1,A ;设置外部中断0的管脚为PA.3 MOV A,00000010B ; MOV INTEG,A ;设置外部中断0为下降沿触发 CLR ACERL ;设置PA口不为AD输入口 SET PAPU.3 ;设置PA.3上拉 SET PAC.3
[单片机]
ARM7与FPGA相结合的应用
  ARM7与FPGA相结合在工业控制和故障检测中的应用   工业控制中往往需要完成多通道故障检测及多通道命令控制(这种多任务设置非常普遍),单独的CPU芯片由于其外部控制接口数量有限而难以直接完成多路检控任务,故利用ARM芯片与FPGA相结合来扩展检控通道是一个非常好的选择。这里介绍用Atmel公司ARM7处理器(AT91FR40162)和ALTERA公司的低成本FPGA芯片(cyclone2)结合使用完成多通道检控任务的一种实现方法。    各部分功能简介   图1为此系统的结构连接框图。如图所示,ARM芯片与FPGA芯片之间通过数据总线、地址总线及读写控制线相连,而与终端PC则通过串口通信;FPGA与目标设备通过命令控
[工业控制]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved