⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 intrrupu_tes.c

📁 这是关于NEC公司产的SH2系列芯片的几个例子程序,对这几个熟了,就很有利于基于其上的开发的展开
💻 C
字号:
/***********************************************************************/
/*                                                                     */
/*  FILE        :Intrrupu_tes.c                                        */
/*  DATE        :Fri, Feb 17, 2006                                     */
/*  DESCRIPTION :Main Program                                          */
/*  CPU TYPE    :SH7144F                                               */
/*                                                                     */
/*  This file is generated by Renesas Project Generator (Ver.4.0).     */
/*                                                                     */
/***********************************************************************/
                  


//#include "typedefine.h"
#ifdef __cplusplus
//#include <ios>                        // Remove the comment when you use ios                  
//_SINT ios_base::Init::init_cnt;       // Remove the comment when you use ios
#endif
#ifdef __cplusplus
extern "C" {
void abort(void);
#endif
void main(void);
#ifdef __cplusplus
}
#endif

#include <machine.h>
#include "iodefine.h"

void init_SCI(void);
void init_PORT(void);
void put_char(char);
void init_CMT(void);
void prt_str(char *str);
void init_ad(void);
int ad_conv(void);
char get_char(void);
char inp_str(char *x);

int sec,sec1,sec2,sec3;
int cont;

void main(void)
{
int i;
char c,n,m[100];
unsigned short int ad0,ad0_1,ad0_2,ad0_3,ad0_4;

init_PORT();
init_SCI();
init_ad();
init_CMT();

set_imask(0);
PE.DRL.BIT.B15 = 0;

while(1){
	ad0 = ad_conv();

	put_char('Q');

	prt_str(" Hello! ");

	ad0_1 = (ad0 / 1000);
	put_char(ad0_1+0x30);
	ad0_2 = ((ad0 - 1000*ad0_1) / 100);
	put_char(ad0_2+0x30);
	ad0_3 = ((ad0 - 1000*ad0_1 - 100*ad0_2) / 10);
	put_char(ad0_3+0x30);
	ad0_4 = (ad0 - 1000*ad0_1 - 100*ad0_2 - 10*ad0_3);
	put_char(ad0_4+0x30);

	put_char(' ');

	put_char(sec3+0x30);
	put_char(sec2+0x30);
	put_char(':');
	put_char(sec1+0x30);
	put_char(sec+0x30);



	put_char(0x0a);
	put_char(0x0d);

	c = get_char();
	put_char(c);
	put_char(0x0a);
	put_char(0x0d);

	n = inp_str(m);
	prt_str(m);
	}

}

void init_PORT(void){
	PFC.PEIORL.BIT.B15 = 1;
	}


void put_char(char str){
	while(!SCI1.SSR.BIT.TDRE);
	SCI1.TDR = str;
	SCI1.SSR.BIT.TDRE = 0;
	while(!SCI1.SSR.BIT.TEND);
	}

char get_char(void){
	char c;
	while(!(SCI1.SSR.BYTE & 0x78));
	c = SCI1.RDR;
	while(!(SCI1.SSR.BIT.RDRF));
	SCI1.SSR.BYTE &= ~0x78;
	return c;
	}
  
void prt_str(char *str){
	while(*str != 0){
		put_char(*str);
		str++;
		}
	}

char inp_str(char *x){
	char n,d;
	while(1){
		d = get_char();
		if(d == 0x0d)break;
		if(d == 0x0a)break;
		*x++= d;
		n++;
		}
	*x = 0;
	prt_str("\n");
	return n;
	}

void init_SCI(void){
	int i;
	MST.CR1.BIT._SCI1 = 0;
	PFC.PAIORL.BIT.B4 = 1;
	PFC.PACRL2.BIT.PA4MD = 1;
	PFC.PACRL2.BIT.PA3MD = 1; 
	SCI1.SCR.BYTE = 0x00;
	SCI1.SMR.BYTE = 0x00;
	SCI1.BRR = 19;			//38400bps
//	SCI1.BRR = 77;			960000bps
	for(i=0;i<=1000;i++);
	SCI1.SCR.BIT.TE = 1;
	SCI1.SCR.BIT.RE = 1;
	}

void init_CMT(void){
	MST.CR2.BIT._CMT = 0;
	CMT0.CMCSR.BIT.CMIE = 1;
	CMT0.CMCSR.BIT.CMF = 0;
	CMT0.CMCSR.BIT.CKS = 1;
	CMT0.CMCOR = 749;		//1ms
	CMT0.CMCNT = 0;
	INTC.IPRG.BIT._CMT0 = 15;
	CMT.CMSTR.BIT.STR0 = 1;
	}

void init_ad(void){
	MST.CR2.BIT._AD0 = 0;
	AD0.ADCSR.BIT.CH = 0;
	AD0.ADCR.BYTE = 0x00;
	}

int ad_conv(void){
	short ad0;
	AD0.ADCR.BIT.ADST = 1;
	while(AD0.ADCSR.BIT.ADF == 0);
	AD0.ADCSR.BIT.ADF = 0;
	ad0 = AD0.ADDR0.WORD >> 6;
	return ad0;
	}


#ifdef __cplusplus
void abort(void)
{
	
}
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -