📄 intprg.c
字号:
/***********************************************************************/
/* */
/* FILE :intprg.c */
/* DATE :Sun, Jul 27, 2008 */
/* DESCRIPTION :define the top address of the interrupt vectors. */
/* CPU GROUP :62P */
/* */
/* This file is generated by Renesas Project Generator (Ver.4.8). */
/* */
/***********************************************************************/
/***************************************************************************
* COMPILER for M16C/60
* Copyright(c) 2004 Renesas Technology Corp.
* And Renesas Solutions Corp.,All Rights Reserved.
* intprg.c : define variable vector table for M16C/62P
*
*
* $Date: 2006/09/13 05:32:07 $
* $Revision: 1.7 $
**************************************************************************/
#include "sfr62p.h"
#include "cstartdef.h"
unsigned int count;
/////////////////
volatile unsigned char IR_data=0; //char data
volatile unsigned char IR_OK=0; //interrupt sever success flag:0==>failed 1===>success
volatile unsigned char IR_DATA[4]={0x00,0x00,0x00,0x00}; //IR frame 4 char data
volatile unsigned char width=0; //32_bits frame counter
static unsigned int width_pre=0; //pre_frame width counter
void delay_100us_asm(void)
{
#pragma ASM
wait_100us:
MOV.B:S #240,R0L
WAIT_L100:
NOP
NOP
NOP
ADJNZ.B #-1,R0L, WAIT_L100
RTS
#pragma ENDASM
}
void PIN_2_0_light(void) //Test segment:LED control
{
pd2=0xff;
p2 =0xff;
p2_0=0;
}
void PIN_2_1_light(void)
{
pd2=0xff;
p2 =0xff;
p2_1=0;
}
void PIN_2_2_light(void)
{
pd2=0xff;
p2 =0xff;
p2_2=0;
}
void PIN_2_3_light(void)
{
pd2=0xff;
p2 =0xff;
p2_3=0;
}
void PIN_2_4_light(void)
{
pd2=0xff;
p2 =0xff;
p2_4=0;
}
void PIN_2_5_light(void)
{
pd2=0xff;
p2 =0xff;
p2_5=0;
}
void PIN_2_6_light(void)
{
pd2=0xff;
p2 =0xff;
p2_6=0;
}
void PIN_2_7_light(void)
{
pd2=0xff;
p2 =0xff;
p2_7=0;
}
/////////////////
// BRK (software int 0)
#pragma interrupt _brk(vect=0)
void _brk(void){}
// vector 1 reserved
// vector 2 reserved
// vector 3 reserved
// INT3 (software int 4)
#pragma interrupt _int3(vect=4)
void _int3(void){}
// TIMER B5 (software int 5)
#pragma interrupt _timer_b5(vect=5)
void _timer_b5(void){}
// TIMER B4,UART1 bus collision (software int 6)
#pragma interrupt _timer_b4(vect=6)
void _timer_b4(void){}
// TIMER B3,UART0 bus collision (software int 7)
#pragma interrupt _timer_b3(vect=7)
void _timer_b3(void){}
// SI/O4 or INT5 (software int 8)
#pragma interrupt _int5(vect=8)
void _int5(void){}
// SI/O3 or INT4 (software int 9)
#pragma interrupt _int4(vect=9)
void _int4(void){}
// UART2 Bus Collision (software int 10)
#pragma interrupt _uart2_bus_collision(vect=10)
void _uart2_bus_collision(void){}
// DMA0 (software int 11)
#pragma interrupt _dma0(vect=11)
void _dma0(void){}
// DMA1 (software int 12)
#pragma interrupt _dma1(vect=12)
void _dma1(void){}
// input key (software int 13)
#pragma interrupt _input_key(vect=13)
void _input_key(void){}
// A-D (software int 14)
#pragma interrupt _ad_converter(vect=14)
void _ad_converter(void){}
// uart2 trance/NACK2 (software int 15)
#pragma interrupt _uart2_trance(vect=15)
void _uart2_trance(void){}
// uart2 receive/ACK2 (software int 16)
#pragma interrupt _uart2_receive(vect=16)
void _uart2_receive(void){}
#if defined (__STANDARD_IO__) && (defined(__FOUSB__) || defined(__E8__))
// uart0 can't be used
#else
// uart0 trance,NACK0 (software int 17)
#pragma interrupt _uart0_trance(vect=17)
void _uart0_trance(void){}
#endif
// uart0 receive,ACK0 (software int 18)
#pragma interrupt _uart0_receive(vect=18)
void _uart0_receive(void){}
#if defined(__STANDARD_IO__) || defined(__FOUSB__) || defined(__E8__)
// uart1 can't be used
#else
// uart1 trance,NACK1 (software int 19)
#pragma interrupt _uart1_trance(vect=19)
void _uart1_trance(void){}
#endif
// uart1 receive,ACK1 (software int 20)
#pragma interrupt _uart1_receive(vect=20)
void _uart1_receive(void){}
// TIMER A0 (software int 21)
#pragma interrupt _timer_a0(vect=21)
void _timer_a0(void){
count++;
if(count>50){
p2^=0xff;
count=0;
}
}
// TIMER A1 (software int 22)
#pragma interrupt _timer_a1(vect=22)
void _timer_a1(void){}
// TIMER A2 (software int 23)
#pragma interrupt _timer_a2(vect=23)
void _timer_a2(void){}
// TIMER A3 (software int 24)
#pragma interrupt _timer_a3(vect=24)
void _timer_a3(void){}
// TIMER A4 (software int 25)
#pragma interrupt _timer_a4(vect=25)
void _timer_a4(void){}
// timer b0 (software int 26)
#pragma interrupt _timer_b0(vect=26)
void _timer_b0(void){}
// timer b1 (software int 27)
#pragma interrupt _timer_b1(vect=27)
void _timer_b1(void){}
// timer b2 (software int 28)
#pragma interrupt _timer_b2(vect=28)
void _timer_b2(void){}
// int0 (software int 29)
#pragma interrupt _int0(vect=29)
void _int0(void){//p2^=0xff;
asm("fclr i"); /*disable the whole inetrupt*/
if(p8_2==0) /*Test the Port 8.4 */
{
//***************************************************************************************** Test the pre_code
width_pre=0;
while(p8_2==0) /*Test the Port 8.4 */
{
delay_100us_asm(); /*time count */
width_pre++;
}
if(width_pre<80||width_pre>95) /*<8.0ms or >9.5ms is failed */
{
ir_int0ic=0; /*enable interrupt int2*/
asm("fset i"); /*enable the whole inetrupt */
return;
}
width_pre=0;
while(p8_2==1) /*Test the Port 8.4 */
{
delay_100us_asm(); /*time count */
width_pre++;
}
if(width_pre<40||width_pre>50) /*<4.0ms or >5.0ms is failed */
{
ir_int0ic=0; /*enable interrupt int2*/
asm("fset i"); /*enable the whole inetrupt */
return;
}
//***************************************************************************************** TEST 32 bits
width_pre=0;
while(width_pre<32)
{
width_pre++;
pd8_2=0;
while(p8_2==0); /*Test the Port 8.4 */
width=0;
while(p8_2==1) /*Test the Port 8.4 */
{
delay_100us_asm(); /*time count */
++width;
}
IR_data<<=1;
if (width > 8) /*set time 8.4ms*/
IR_data|=0x01; /*set as 1*/
if (width_pre==8)
IR_DATA[0] = IR_data; /*system code*/
if (width_pre==16)
IR_DATA[1] = IR_data; /*system code*/
if (width_pre==24)
IR_DATA[2] = IR_data; /*user code*/
if (width_pre==32)
IR_DATA[3] = IR_data; /*user code*/
}
if(IR_DATA[2]!=~IR_DATA[3])
{
ir_int0ic=0; /*enable interrupt int*/
asm("fset i"); /*enable the whole inetrupt*/
return;
}
IR_OK=1; /*decode success*/
if(IR_OK ==1)
{
IR_OK=0;
switch(IR_DATA[2]) /* change the Key variable */
{
case 0xE8 :{PIN_2_0_light(); break; }//power off/on
case 0x48 :{PIN_2_1_light(); break; }//vol ++
case 0xA8 :{PIN_2_2_light(); break; }//vol --
case 0x98 :{PIN_2_3_light(); break; }//channel ++
case 0x18 :{PIN_2_4_light(); break; }//channel --
default : {PIN_2_5_light(); break; }//default
}
}
}
ir_int0ic=0; /*enable interrupt int2*/
asm("fset i"); /*enable the whole inetrupt */
}
// int1 (software int 30)
#pragma interrupt _int1(vect=30)
void _int1(void){p2^=0xff;}
// int2 (software int 31)
#pragma interrupt _int2(vect=31)
void _int2(void){p2^=0xff;}
// software int 32 for user or MR30
// software int 33 for user or MR30
// software int 34 for user or MR30
// software int 35 for user or MR30
// software int 36 for user or MR30
// software int 37 for user or MR30
// software int 38 for user or MR30
// software int 39 for user or MR30
// software int 40 for user or MR30
// software int 41 for user or MR30
// software int 42 for user or MR30
// software int 43 for user or MR30
// software int 44 for user or MR30
// software int 45 for user or MR30
// software int 46 for user or MR30
// software int 47 for user or MR30
// software int 48 for user
// software int 49 for user
// software int 50 for user
// software int 51 for user
// software int 52 for user
// software int 53 for user
// software int 54 for user
// software int 55 for user
// software int 56 for user
// software int 57 for user
// software int 58 for user
// software int 59 for user
// software int 60 for user
// software int 61 for user
// software int 62 for user
// software int 63 for user
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -