PIC18F14k50 中断

发布者:码字奇思最新更新时间:2020-08-31 来源: eefocus关键字:PIC18F14k50  中断  串口 手机看文章 扫描二维码
随时随地手机看文章

//mplab v1.7   mcc18 串口接收中断示例


#include


#include

#define u8 unsigned char

#define u16 unsigned int



#pragma config CPUDIV = NOCLKDIV

#pragma config USBDIV = OFF

#pragma config FOSC   = HS

#pragma config PLLEN  = ON

#pragma config FCMEN  = OFF

#pragma config IESO   = OFF

#pragma config PWRTEN = OFF

#pragma config BOREN  = OFF

#pragma config BORV   = 30

#pragma config WDTEN  = OFF

#pragma config WDTPS  = 32768

#pragma config MCLRE  = OFF

#pragma config HFOFST = OFF

#pragma config STVREN = ON

#pragma config LVP    = OFF

#pragma config XINST  = OFF

#pragma config BBSIZ  = OFF

#pragma config CP0    = OFF

#pragma config CP1    = OFF

#pragma config CPB    = OFF

#pragma config WRT0   = OFF

#pragma config WRT1   = OFF

#pragma config WRTB   = OFF

#pragma config WRTC   = OFF

#pragma config EBTR0  = OFF

#pragma config EBTR1  = OFF

#pragma config EBTRB  = OFF



#define Firmware_led         LATBbits.LATB4

#define InitFirmwareLed()    LATB |= 1<<4; TRISB &= ~(1<<4)

#define Fir_Led_on()         Firmware_led = 0

#define Fir_Led_Off()        Firmware_led = 1



#define InitSwitch()        ANSEL = 0;

                            ANSELH = 0;

                            LATC |= 0xF9;

                            TRISC |= 0xF9;

#define SW_MENU             PORTCbits.RC0

#define SW_VGA2             PORTCbits.RC4



#define DelayMs(x)             

{                               

unsigned long _dcnt;       

unsigned long _ms;         

_ms = x;                   

while (_ms)                 

{                           

   _dcnt=((unsigned long)(0.001/(1.0/2000000)/6));

   while(_dcnt--);

   _ms--;                 

}                           

}



void UART_Init(void)

{

    //Fir_Led_on();

    TRISBbits.TRISB5 = 1;

    ANSELHbits.ANS11 = 0;



    TXSTAbits.TX9 = 0;

    TXSTAbits.TXEN = 1;

    TXSTAbits.BRGH = 1;



    RCSTAbits.RX9 = 0;

    RCSTAbits.CREN =1;

    TXSTAbits.SYNC = 0;

    RCSTAbits.SPEN = 1;



    BAUDCONbits.BRG16 = 0;

    SPBRG = 25;



    RCONbits.IPEN = 1;

    PIE1bits.RCIE = 1;

    INTCONbits.PEIE = 1;

    INTCONbits.GIE = 1;

    Fir_Led_on();

}



//void InterruptHandlerLow(void);

//#pragma code InterruptVectorLow = 0x18

//void InterruptVectorLow(void)

//{

//    _asm

//    goto InterruptHandlerLow

//    _endasm

//}

//#pragma code

//

//#pragma interruptlow InterruptHandlerLow

//void InterruptHandlerLow(void)

//{

//    unsigned char data;

//    if(PIR1bits.RCIF)

//    {

//        PIR1bits.RCIF = 0;

//        data = RCREG;

//        Fir_Led_on();

//    }

//}



void InterruptHandlerHigh(void);

#pragma code InterruptVectorHigh = 0x08

void InterruptVectorHigh(void)

{

    _asm

    goto InterruptHandlerHigh

    _endasm

}

#pragma code



#pragma interrupt InterruptHandlerHigh

void InterruptHandlerHigh(void)

{

    unsigned char data;

    if(PIR1bits.RCIF)

    {

        PIR1bits.RCIF = 0;

        data = RCREG;

        Fir_Led_on();

    }

}



void main(void)

{

    unsigned char data;

    InitSwitch();

    InitFirmwareLed();

    UART_Init();

    while(1)

    {

        if(!SW_MENU)

        {

            Fir_Led_Off();

        }

        else if(!SW_VGA2)

        {

            Fir_Led_on(); 

        }

//        else if(PIR1bits.RCIF)

//        {

//            //PIR1bits.RCIF = 0;

//            data = RCREG;

//            Fir_Led_on();

//        }

    }

}


关键字:PIC18F14k50  中断  串口 引用地址:PIC18F14k50 中断

上一篇:PIC18**K80配置位详解
下一篇:pic 18f45k80单片机看门狗程序

推荐阅读最新更新时间:2024-11-01 13:54

LM3S9B96 的UART以中断方式收发数据
lm3s9b96的uart发送和接收都可以进入用户编写的中断处理函数。 uart的配置无非是设置:波特率、数据位、停止位、奇偶校验位等。 下面是用uart1为例,配置成中断方式收发数据 #include inc/lm3s9b96.h #include inc/hw_memmap.h #include inc/hw_types.h #include inc/hw_ints.h #include driverlib/interrupt.h #include driverlib/gpio.h #include driverlib/uart.h #include driverlib/sysctl.h
[单片机]
关于烈火四轴遥控器串口上传分析
已发送遥控器供电电压为例 函数Print_BSP_VOLTAGE中data前5位为帧头,最后一位校验。 void Print_BSP_VOLTAGE(void) { uint8_tdata ; uint8_t count; data = '$'; data = 'M'; data = ' ';// data = 7; //校验用数据长度 data = MSP_ANALOG; data = (uint8_t)(Battery_Fly/10.0f)& 0xFF; data = 0; data = 0; data = 0; data =
[单片机]
stm32 USART_IT_IDLE中断 一帧数据
USART_IT_IDLE中断,是串口收到一帧数据后,发生的中断。也可以叫做一包数据 USART_IT_IDLE和USART_IT_RXNE区别 当接收到1个字节,会产生USART_IT_RXNE中断 当接收到一帧数据,就会产生USART_IT_IDLE中断 清中断方法 //USART_IT_RXNE USART_ClearITPendingBit(USART1, USART_IT_RXNE); //USART_IT_IDLE USART1- SR; //先读SR寄存器 USART1- DR; //再读DR寄存器 使用举例 u8 count; u8 flag; void uart_init(u32
[单片机]
stm32 USART_IT_IDLE<font color='red'>中断</font> 一帧数据
STM32F103RB中的串口和端口
从《STM8S和STM32选型手册》中,可以得到如上图的STM32F103RB的一些硬件参数。 串口(USART)有3个,IO端口有51个。 从如下的原理图中看到,3个串口的引脚分别是(接收数据的引脚Rx,发送数据的引脚Tx): PA9/U1_TX/TIM1_CH2 PA10/U1_RX/TIM1_CH3 PA2/U2_TX/ADC2/TIM2_CH3 PA3/U2_RX/ADC3/TIM2_CH4 PB10/I2C2_SCL/U3_TX PB11/I2C2_SDA/U3_RX 51个IO端口的引脚分别是:PA(0~15)16个,PB(0~15)16个,PC(0~15)16个,PD(0~2)3个,共51个。 PA0/WKU
[单片机]
STM32F103RB中的<font color='red'>串口</font>和端口
PIC877a定时器、中断系统总结
简介:PIC877a定时器、中断系统总结:定时,计数从其内部工作方式分析一般表现为计数累加功能,通常是由特定的时钟脉冲来触发驱动。PIC16F877单片机有14个中断源,每个中断源都可配置有一个中断使能位(IE)和一个中断标志位(IF)。 1.定时器:(3个TMR0,TMR1,TMR2) TMR0,8位位累加定时、计数寄存器,并带有预分频器。若考虑预分频器的效果,其固有定时为65ms。如果用作通用计数器,可采用外部T0CK1作为计数触发信号。 与TMR0相关的寄存器:TMR0(初始值),OPTION_REG(选择项寄存器T0CS,T0SE,PSA,PS2~PS0),INTCON(中断控制寄存器:GIE,T0IE,T0I
[单片机]
ARM开发(5)基于STM32的UART串口通信实验
一 串口通信原理: 1.1 本实验实现串口助手发送数据然后回送在串口助手呈现出来。 1.2 实验思路:看懂电路图,理解uart串口通信原理。 1.3 开发环境 : MDK5 库函数版本开发 JLINK仿真 二 实验步骤: 2.1 uart.h代码: #ifndef __USART_H #define __USART_H #include stdio.h #include sys.h #define USART_REC_LEN 200 //定义最大接收字节数 200 #define EN_USART1_RX 1 //使能(1)/禁止(0)串口1接收 extern u16 USART_TX_B
[单片机]
单片机串口通信基础概述
串口通信是非常重要的,首先了解下基础 计算机串口通信基础 随着多微机系统的广泛应用和计算机网络技术的普及,计算机的通信功能越越显得重要。计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。 通信有并行通信和串行通信两种方式。在多微机系统以及现代化测控系统中信息的交换多采用串行通信方式。 计算机通信是将计算机技术和通信技术的相结合,完成计算机与外部设备或计算机与计算机之间的信息交换。可以分为两大类:并行通信与串行通信。 并行通信通常是将数据字节的各位用多条数据线同时进行传送。(如下图) 由上图可知一下可以传8位,跟并行的A/D D/A 差不多,询问和应答 是发送 和接受 来询问是否准备好了没有。
[单片机]
单片机<font color='red'>串口</font>通信基础概述
GD32 MCU是如何进入中断函数的
用过GD32 MCU的小伙伴们都知道,程序是顺序执行的,但当有中断来的时候程序会跳转到中断函数,执行完中断函数后程序又继续回到原来的位置继续执行,那么你们知道MCU是如何找到中断函数入口的吗? 今天我们就以GD32F303系列的EXTI0中断来描述下MCU是如何进入中断的。 首先来看一个简单的代码(以Keil为开发环境): 这段程序初始化了两个LED灯,并将一个按键设置为中断模式,这里用的是PA0,所以中断号也为0,即EXTI0。 再来看一下中断函数: 中断函数也很简单,当有中断发生的时候,去翻转一个LED灯状态。 好,我们通过map文件看下这个中断函数的地址在哪里(不会的小伙伴可以看看前面的视频——《如果查看
[单片机]
GD32 MCU是如何进入<font color='red'>中断</font>函数的
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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