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

📄 vidu4-1.c

📁 dsp t&#7915 c&#417 b&#7843 n &#273 &#7871 n n&#226 ng cao 1
💻 C
字号:
/*******************************************************************************
;	Vidu4-1.c la chuong trinh viet bang C30 de chay tren mot dsPIC			   *
;	Chuong trinh thuc hien viec sau: Xuat chuoi ky tu 'Xin chao!' ra cong	   *
;	RS232 sau moi giay (1 Hz)												   *
;*******************************************************************************

;	Tac gia				: Nguyen Quang Nam									   *

;	Don vi				: PIC Viet Nam										   *

;	Ten tap tin			: Vidu4-1.c											   *

;	Ngay				: 25/08/2006										   *

;	Phien ban			: 0.01												   *

;	Nhung tap tin can thiet khac: p30F4012.gld, p30f4012.h					   *

;	Cong cu duoc dung:	MPLAB 7.31											   *
;						C30 2.02 SE											   *
;						ASM30 2.14											   *
;						LNK30 2.14											   *
------------------------------------------------------------------------------*/
#include "p30f4012.h"

	_FOSC(CSW_FSCM_OFF & FRC_PLL4);		//Clock = 32 MHz
	_FWDT(WDT_OFF);
	_FBORPOR(MCLR_EN & PBOR_OFF & PWMxL_ACT_HI & PWMxH_ACT_HI);
	_FGS(CODE_PROT_OFF);

//Cac prototype cho cac chuong trinh con
void Init_TMR1(void);
void Init_UART1_Module(void);

//Bang hang so trong ROM
const unsigned char __attribute__ ((space(psv), address (0x0200))) 
Chuoi1[] = "Xin chao! \0";

//Cac bien toan cuc
unsigned char flag, idx;

//------------------------------------------------------------------------------
//Chuong trinh chinh
int main(void) {
	Init_TMR1();			//Khoi tao Timer 1
	Init_UART1_Module();	//Khoi tao module UART1
	_PSV=1;
	PSVPAG = __builtin_psvpage(Chuoi1);
	flag = 0;				//Xoa co bao het thoi gian cho
	while (1) {
		if (flag) {			//Cho den khi het thoi gian cho
			idx = 0;
			while (Chuoi1[idx]) {	//Neu chua het chuoi thi
				U1TXREG = Chuoi1[idx++];	//Xuat tiep 1 ky tu
				while (!U1STAbits.TRMT);	//Cho den khi truyen xong ky tu
			};
			flag = 0;
		};
	};
}

//Chuong trinh con khoi tao module UART1
void Init_UART1_Module(void) {
	U1MODE = 0x8000;		//Main I/O, 8-bit, no parity, 1 stop bit
	U1STA = 0x0400;			//bit10=UTXEN
	U1BRG = (((8000000/38400)/16)-1);	//38400 bps @ Fcy = 8 MHz
}

//Chuong trinh con khoi tao Timer 1, tran sau moi 1 giay o muc xung 8 Mips
void Init_TMR1(void) {
	TMR1 = 0;			//Xoa so dem trong TMR1
	PR1 = 0x7A12;		//Nguong tran la 1 giay tuong ung voi clock = 32 MHz
	_T1IF = 0;			//Xoa co ngat cua Timer 1
	T1CON = 0x8030;		//Dung fcy lam clock, prescale = 1:256
	_T1IE = 1;			//Cho phep ngat khi Timer 1 tran
}

//Chuong trinh xu ly ngat Timer 1
void _ISR _T1Interrupt(void) {
	_T1IF = 0;			//Xoa co ngat
	flag = 1;			//Bat co cho phep xuat chuoi ky tu
}

⌨️ 快捷键说明

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