bbxyliyang01

    1. chunyang 发表于 2019-12-6 18:07 总中断、外中断0都使能,中断模式根据需要选沿触发或电平触发,编程没问题话,一定会响应。
      您说的这些我还真都配置了,就是不响应!
    2. huo_hu 发表于 2019-12-6 18:44 P5.5做不了外中断,你再看看书,只有特定的管脚可以
      我用的也不是P55,P32,P33,P55是一个按键输入。
    3. chunyang 发表于 2019-12-6 15:17 代码有问题,外中断0要配置成有效,总中断使能也要有效。
      您好,我配置了开中断,请教哪里还需要配置?
    4.   第三天 定时器的学习 3.1 定时/计数器功能 3.1.1定时功能 所谓定时功能就是通过来自单片机内部的时钟脉冲作计数脉冲,使计数器计数,即每个机器周期计数器加1,计数值达到予置值后,定时/计数模块产生溢出。 3.1.2计数器功能 所谓计数是指对外部事件进行计数。外部事件的发生以输入脉冲表示,因此计数功能的实质就是对外来脉冲进行计数。 3.2定时器应用的方法 在单片机中,每一个中断源都有一个相应的中断标志位,该中断标志将占据中断控制寄存器的一位,该中断标志位置1,就意味着有中断信号产生并向MCU申请中断,但这不代表MCU一定响应该中断。响应一个中断请求的条件: 响应A中断=全局中断允许标志(由用户软件设置)AND中断A允许标志位(由用户软件设置)AND中断A标志位(由用户软件设置或者符合中断条件时由硬件自动设置)。 我们今天的目的就是学习PIC单片机定时器0,实现让LED灯每隔1S亮一次。 接下来我们分析一下,指令周期就是单片机执行一个指令所花费的时间。这也是定时器定时的最小时间单位。时钟频率/4=指令频率。1/指令频率=指令周期。假设现在的时钟是4MHZ  ,4MHz的时钟经过4分频后变成了 1MHz 其周期为0.0000001s也就是1us,这个1us就是指令周期,这1us也就是定时器定时的最小单位。 1、定时器与预分频器 假设在没有预分频器情况下。开启定时器 每隔一个指令周期定时器就加一。假设时钟是4MHz  也就是每隔 1us 定时器加一。如果有了预分频器假设预分频器设置成2分频,定时器就 每隔2个指令周期定时器加一。如果预分频器设置成4分频,定时器就 每隔4个指令周期定时器加一,以此类推。 2、定时器中断标志位 如: TMR0 这个是8位的定时器,也就是8位的寄存器。8位的寄存器能代表的数值为0~255.也就是说定时器可以从0开始加一直加到255.到255后再加一就又变成0。此时TMR0定时器中断标志位 (TMR0IF)变成 1.(如果中断没有开启,并不执行中断程序。) 3、实例说明:    假设时钟周期为4MHZ,每隔1秒点亮LED,每1秒灭掉LED。这样的程序要如何做到呢。   1、得到指令周期  4MHz/4=1MHz       1/1MHz=0.0000001s=1us   2、得到预分频      定时器定时的最大时间=预分频*256。256X256=65536us=65.536ms 这里面我们选择50ms。  3、计算定时器初始值=(定时器最大值+1)-(定时时间/预分频)。      255+1=256 50000/256=195.3125      256-195.3125=60.6875 四舍五入,定时器初始值为61 接下来我们就要开始编程,编程之前,我们讲下,几个重要的寄存器。   #include " pic.h" //********************函数定义*********************   //*************** 主程序 ******************** void main(void) {     PSA=0;    //PSA等于0,分频   PS0=1;   PS1=1;   PS2=1;   T0CS=0;    //设为定时方式   TMR0=61;   //设定定时初值       GIE=1;     //总中断允许   T0IE=1;    //TMR0中断允许   TRISC=0;      //PORTC设置为输出   PORTC=0x0ff;  //PORTC输出1   while(1)   {    } }   //*********************中断服务程序****************** void interrupt isr(void) {  static uint tmr0_count=0;  if(T0IE&&T0IF)     //判断是否为TMR0中断   {     T0IF=0;     //清TMR0中断标志位(必须用软件清零)     TMR0=61;    //TMR0重新赋初值     if(++tmr0_count>=20)  //定时20次,就是1秒     {       tmr0_count=0;       PORTC=~PORTC;           }   } }
    5. 第二天开始第一个程序 今天的任务,点亮一个LED,和编写一个流水灯程序。我们直接进入主题,先介绍下PIC单片机I/O口,I/O端口的寄存器复位后,默认为输入(输出高阻态),每一路I/O有方向控制寄存器TRISA~E和数据寄存器PORTA~E,为了实现I/O端口的功能必需先对端口进行初始化设置。 方向控制寄存器与数据寄存器都是8位的,方向控制寄存器中的每一位与数据寄存器中的每一位相对应;方向控制寄存器的相应位设置为1表示输入;设置为0表示输出;端口控制寄存器的相应位设置为1表示输出高电平,设置为0表示输出低电平。 这个需要我们记住。通用I/O接口的输出设计要点:1、输出电平的转换和匹配,我们PIC系统一般工作电源是5V,当连接的外围是9V、12V等于5V不同的电源时,需要考虑输出电平的转换。2、输出电流的驱动能力,每个I/O口允许最大25mA的灌电流和20mA的拉电流,可以直接驱动LED和继电器。因各端口结构不同,RB口提供的总灌电流和总拉电流可达150mA和100mA;其他端口为80mA和50mA;五个端口驱动电流之和不大于200mA。3、输出电平转换的延时,PIC单片机是一款高速单片机,当系统晶振为4MHZ时,执行一个指令的时间为0.25us,也就是说讲一个I/O置1,在置0,只需要0.25us。 LED发光二级管电流硬件设计:二极管电流大于5MA,人眼睛就可以明显的观察到二极管的发光,导通电流越大,亮度越高。但最好不要超过10ma,否则可能会将二级管烧坏或IO口烧坏。我们在设计电路时,需要在电路中串接一个限流电阻,这个电流一般在330-1K之间。 软件设计,代码如下: #include<pic.h> //头文件包含 //芯片配置字定义 #pragma config FOSC = XT        // Oscillator Selection bits (XT oscillator: Crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN) #pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled and can be enabled by SWDTEN bit of the WDTCON register) #pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled) #pragma config MCLRE = ON       // RE3/MCLR pin function select bit (RE3/MCLR pin function is MCLR) #pragma config CP = OFF         // Code Protection bit (Program memory code protection is disabled) #pragma config CPD = OFF        // Data Code Protection bit (Data memory code protection is disabled) #pragma config BOREN = ON       // Brown Out Reset Selection bits (BOR enabled) #pragma config IESO = ON        // Internal External Switchover bit (Internal/External Switchover mode is enabled) #pragma config FCMEN = ON       // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is enabled) #pragma config LVP = ON         // Low Voltage Programming Enable bit (RB3/PGM pin has PGM function, low voltage programming enabled) #pragma config BOR4V = BOR40V   // Brown-out Reset Selection bit (Brown-out Reset set to 4.0V) #pragma config WRT = OFF        // Flash Program Memory Self Write Enable bits (Write protection off) void main() { //   TRISC=0xfe;//11111110,端口操作 //   PORTC=0xfe;//00000001    TRISC0=0;//位操作,类似51单片机sbit    RC0=0;    while(1); } 实验效果如下: 流水灯程序如下: #include<pic.h> #define uchar unsigned char #define uint  unsigned int #pragma config FOSC = XT        // Oscillator Selection bits (XT oscillator: Crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN) #pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled and can be enabled by SWDTEN bit of the WDTCON register) #pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled) #pragma config MCLRE = ON       // RE3/MCLR pin function select bit (RE3/MCLR pin function is MCLR) #pragma config CP = OFF         // Code Protection bit (Program memory code protection is disabled) #pragma config CPD = OFF        // Data Code Protection bit (Data memory code protection is disabled) #pragma config BOREN = ON       // Brown Out Reset Selection bits (BOR enabled) #pragma config IESO = ON        // Internal External Switchover bit (Internal/External Switchover mode is enabled) #pragma config FCMEN = ON       // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is enabled) #pragma config LVP = ON         // Low Voltage Programming Enable bit (RB3/PGM pin has PGM function, low voltage programming enabled) #pragma config BOR4V = BOR40V   // Brown-out Reset Selection bit (Brown-out Reset set to 4.0V) #pragma config WRT = OFF        // Flash Program Memory Self Write Enable bits (Write protection off) void delay_ms(uint x) {          uint a,b;          for(a=x;a>0;a--)                    for(b=110;b>0;b--); } void main() {          uchar position=0;          TRISC=0x00;//设置为输出方式          while(1)          {                    PORTC=~(1<<postion);                    if(++position>=8)      postion=0;                    delay_ms(1000);          } }    
    6. max30100血氧的程序 6/4144 51单片机 2019-10-11
      加我QQ515580142,我有这个资料
    7. 【T叔藏书阁】PIC单片机系列 4/3168 下载中心专版 2019-10-11
      感谢分享,谢谢

最近访客

< 1/1 >

统计信息

已有4人来访过

  • 芯积分:--
  • 好友:--
  • 主题:6
  • 回复:7

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言