定时器闪烁lED灯
- 一、引脚配置
- 二、编写代码
-
- 1.r_cg_userdefine.h
- 2.r_cg_timer_user.h
- 3.r_main.c
- 三、烧录程序
??最后一篇博客记录了定时器的使用情况。本文使用定时器定期显示数字管。数字管本身的原理非常简单。可根据原理图配置相关引脚。在这里使用数字管的目的是为未来提供可视化界面AD、显示通信等功能。
一、引脚配置
??根据原理图配置相关引脚,定时器选择通道1定时1ms。
二、编写代码
1.r_cg_userdefine.h
/*********************************************************************************************************************** * DISCLAIMER * This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. * No other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all * applicable laws, including copyright laws. * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIESREGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED * OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY * LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE FOR ANY DIRECT, * INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR * ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability * of this software. By using this software, you agree to the additional terms and conditions found by accessing the * following link: * http://www.renesas.com/disclaimer * * Copyright (C) 2011, 2016 Renesas Electronics Corporation. All rights reserved. ***********************************************************************************************************************/ /*********************************************************************************************************************** * File Name : r_cg_userdefine.h * Version : CodeGenerator for RL78/G14 V2.04.05.01 [11 Nov 2016] * Device(s) : R5F104FE * Tool-Chain : CCRL * Description : This file includes user definition. * Creation Date: 2022/6/2 ***********************************************************************************************************************/ #ifndef _USER_DEF_H #define _USER_DEF_H /*********************************************************************************************************************** User definitions ***********************************************************************************************************************/ /* Start user code for function. Do not edit comment generated here */ #define COM1 P6_bit.no3 #define COM2 P7_bit.no0 #define COM3 P7_bit.no1 #define COM4 P7_bit.no2 #define COM5 P7_bit.no3 #define SEG_A P3_bit.no1 #define SEG_B P3_bit.no0 #define SEG_C P14_bit.no6 #define SEG_D P1_bit.no3 #define SEG_E P1_bit.no4 #define SEG_F P1_bit.no5 #define SEG_G P1_bit.no6 #define SEG_DP P1_bit.no7 //void key_scan(void);//KEY1-KEY5?¨¬2a /* End user code. Do not edit comment generated here */ #endif
2.r_cg_timer_user.h
/*********************************************************************************************************************** * DISCLAIMER * This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. * No other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all * applicable laws, including copyright laws. * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIESREGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED * OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY * LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE FOR ANY DIRECT, * INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR * ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability * of this software. By using this software, you agree to the additional terms and conditions found by accessing the * following link: * http://www.renesas.com/disclaimer * * Copyright (C) 2011, 2016 Renesas Electronics Corporation. All rights reserved. ***********************************************************************************************************************/
/*********************************************************************************************************************** * File Name : r_cg_timer_user.c * Version : CodeGenerator for RL78/G14 V2.04.05.01 [11 Nov 2016] * Device(s) : R5F104FE * Tool-Chain : CCRL * Description : This file implements device driver for TAU module. * Creation Date: 2022/6/2 ***********************************************************************************************************************/
/*********************************************************************************************************************** Includes ***********************************************************************************************************************/
#include "r_cg_macrodriver.h"
#include "r_cg_timer.h"
/* Start user code for include. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */
#include "r_cg_userdefine.h"
/*********************************************************************************************************************** Pragma directive ***********************************************************************************************************************/
#pragma interrupt r_tau0_channel0_interrupt(vect=INTTM00)
/* Start user code for pragma. Do not edit comment generated here */
uint16_t time_count0=0;//timer count
uint8_t display_buffer[4]={
1,2,3,4,};//display num
uint8_t display_count0=0;//
/* End user code. Do not edit comment generated here */
/*********************************************************************************************************************** Global variables and functions ***********************************************************************************************************************/
/* Start user code for global. Do not edit comment generated here */
/************************************************************* Function:Display one digit *************************************************************/
void display_7seg(unsigned char led_digit)
{
unsigned char digit_bak;
digit_bak = led_digit;
switch(digit_bak)
{
case 0: //display 0
SEG_A=1;SEG_B=1;SEG_C=1;SEG_D=1;SEG_E=1;SEG_F=1;SEG_G=0;
break;
case 1: //display 1
SEG_A=0;SEG_B=1;SEG_C=1;SEG_D=0;SEG_E=0;SEG_F=0;SEG_G=0;
break;
case 2: //display 2
SEG_A=1;SEG_B=1;SEG_C=0;SEG_D=1;SEG_E=1;SEG_F=0;SEG_G=1;
break;
case 3: //display 3
SEG_A=1;SEG_B=1;SEG_C=1;SEG_D=1;SEG_E=0;SEG_F=0;SEG_G=1;
break;
case 4: //display 4
SEG_A=0;SEG_B=1;SEG_C=1;SEG_D=0;SEG_E=0;SEG_F=1;SEG_G=1;
break;
case 5: //display 5
SEG_A=1;SEG_B=0;SEG_C=1;SEG_D=1;SEG_E=0;SEG_F=1;SEG_G=1;
break;
case 6: //display 6
SEG_A=1;SEG_B=0;SEG_C=1;SEG_D=1;SEG_E=1;SEG_F=1;SEG_G=1;
break;
case 7: //display 7
SEG_A=1;SEG_B=1;SEG_C=1;SEG_D=0;SEG_E=0;SEG_F=0;SEG_G=0;
break;
case 8: //display 8
SEG_A=1;SEG_B=1;SEG_C=1;SEG_D=1;SEG_E=1;SEG_F=1;SEG_G=1;
break;
case 9: //display 9
SEG_A=1;SEG_B=1;SEG_C=1;SEG_D=1;SEG_E=0;SEG_F=1;SEG_G=1;
break;
case 10://off display
SEG_A = 0;SEG_B = 0;SEG_C = 0;SEG_D = 0;SEG_E = 0;SEG_F = 0;SEG_G = 0;
break;
case 11://display E
SEG_A=1;SEG_B=0;SEG_C=0;SEG_D=1;SEG_E=1;SEG_F=1;SEG_G=1;
break;//
case 12://display G0 G1
SEG_A = 0;SEG_B = 0;SEG_C = 0;SEG_D = 0;SEG_E = 0;SEG_F = 0;SEG_G = 1;
break;//
case 13://display b
SEG_A = 0;SEG_B = 0;SEG_C = 1;SEG_D = 1;SEG_E = 1;SEG_F = 1;SEG_G = 1;
break;
default:
NOP();//
NOP();//
break;
}
}
void display_digit_led(void)
{
display_count0+=1;//
COM5 = 0;
switch(display_count0%4+1)
{
case 1:
display_7seg(display_buffer[0]);//
COM1 = 0;COM2 = 1;COM3 = 1;COM4 = 1;
SEG_DP=0;
break;//
case 2:
display_7seg(display_buffer[1]);//
COM1 = 1;COM2 = 0;COM3 = 1;COM4 = 1;//
//SEG_DP=1;
break;//
case 3:
display_7seg(display_buffer[2]);//
COM1 = 1;COM2 = 1;COM3 = 0;COM4 = 1;
SEG_DP=0;//off clock char
break;//
case 4:
display_7seg(display_buffer[3]);//
COM1 = 1;COM2 = 1;COM3 = 1;COM4 = 0;
break;//
}
}
void set_led_num(int num)
{
display_buffer[0]=num/1000;
display_buffer[1]=num%1000/100;
display_buffer[2]=num%1000%100/10;
display_buffer[3]=num%1000%100%10;
}
void display_LED(void)
{
static int count=0;
if(++count>100)
{
count=0;
display_digit_led();
}
}
/* End user code. Do not edit comment generated here */
/*********************************************************************************************************************** * Function Name: r_tau0_channel0_interrupt * Description : This function is INTTM00 interrupt service routine. * Arguments : None * Return Value : None ***********************************************************************************************************************/
static void __near r_tau0_channel0_interrupt(void)
{
/* Start user code. Do not edit comment generated here */
time_count0+=1;
/* End user code. Do not edit comment generated here */
}
/* Start user code for adding. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */
3.r_main.c
/*********************************************************************************************************************** * DISCLAIMER * This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. * No other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all * applicable laws, including copyright laws. * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIESREGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED * OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY * LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE FOR ANY DIRECT, * INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR * ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability * of this software. By using this software, you agree to the additional terms and conditions found by accessing the * following link: * http://www.renesas.com/disclaimer * * Copyright (C) 2011, 2016 Renesas Electronics Corporation. All rights reserved. ***********************************************************************************************************************/
/*********************************************************************************************************************** * File Name : r_main.c * Version : CodeGenerator for RL78/G14 V2.04.05.01 [11 Nov 2016] * Device(s) : R5F104FE * Tool-Chain : CCRL * Description : This file implements main function. * Creation Date: 2022/6/2 ***********************************************************************************************************************/
/*********************************************************************************************************************** Includes ***********************************************************************************************************************/
#include "r_cg_macrodriver.h"
#include "r_cg_cgc.h"
#include "r_cg_port.h"
#include "r_cg_timer.h"
#include "r_cg_wdt.h"
/* Start user code for include. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */
#include "r_cg_userdefine.h"
/*********************************************************************************************************************** Pragma directive ***********************************************************************************************************************/
/* Start user code for pragma. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */
/*********************************************************************************************************************** Global variables and functions ***********************************************************************************************************************/
/* Start user code for global. Do not edit comment generated here */
extern void hdwinit(void);//
extern display_7seg(unsigned char led_digit);
extern void display_LED(void);
extern void set_led_num(int num);
extern uint16_t time_count0;
uint16_t i=0;
/* End user code. Do not edit comment generated here */
void R_MAIN_UserInit(void);
/*********************************************************************************************************************** * Function Name: main * Description : This function implements main function. * Arguments : None * Return Value : None ***********************************************************************************************************************/
void main(void)
{
R_MAIN_UserInit();
/* Start user code. Do not edit comment generated here */
set_led_num(0);
while (1U)
{
R_WDT_Restart();
display_LED();
if(time_count0>1000)
{
time_count0=0;
set_led_num(i);
i++;
}
;
}
/* End user code. Do not edit comment generated here */
}
/*********************************************************************************************************************** * Function Name: R_MAIN_UserInit * Description : This function adds user code before implementing main function. * Arguments : None * Return Value : None ***********************************************************************************************************************/
void R_MAIN_UserInit(void)
{
/* Start user code. Do not edit comment generated here */
hdwinit();//
R_TAU0_Channel0_Start();//
EI();
/* End user code. Do not edit comment generated here */
}
/* Start user code for adding. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */
三、烧录程序
烧录程序,效果如下: