예제 #1
0
파일: 1602.c 프로젝트: hxl9654/C51_Study
void main()
{
	uint8 idata str1[100],str2[100];
	uint8 i,index=0;
	lcdinit();
	lcdinit();
	for(i=0;i<16;i++)
	{
		str1[i]=' ';
		str2[i]=' ';
		str1[16+sizeof(string1)+i]=' ';
		str2[16+sizeof(string2)+i]=' ';
	}
	for(i=0;i<sizeof(string1);i++)
		{
			str1[16+i]=string1[i];
			str2[16+i]=string2[i];
		}
	i--;
	str1[16+i]=' ';
	str2[16+i]=' ';
	while(1)
	{
	lcdshow(0,0,str1+index,16);
	lcdshow(0,1,str2+index,16);
	Delay100ms();
	index++;
	if(index>=(15+sizeof(string1)))index=0;	
	}
}
예제 #2
0
void main()
{
	trisb=0x00;
	lcdinit();
	printf("enter the password");
	clrscr();


	while(1)
	{

		for(i=0;i<=11;i++)
			{
			value[i]=getc();
			//delay_ms(500); **No delay needed**
			//printf("%c", val[i]); /*can use for debugging*/
			//printc(value[i]);/*can use for debugging*/
			}
		if(value[0]=='3' && value[1]=='4' && value[2]=='0' && value[3]=='0' && value[4]=='6' && value[5]=='C' && value[6]=='5' && value[7]=='D' && value[8]=='9' && value[9]=='8' && value[10]=='9' && value[11]=='D')
			{
    		clrscr();
			printc("User 1 Identified");

     		}
	     else if(value[0]=='3' && value[1]=='4' && value[2]=='0' && value[3]=='0' && value[4]=='6' && value[5]=='C' && value[6]=='5' && value[7]=='9' && value[8]=='4' && value[9]=='3' && value[10]=='4' && value[11]=='2')
			{
    		clrscr();
			printc("User 2 Identified");

     		}
	
	}

}
예제 #3
0
파일: screen.c 프로젝트: tusharsoni/Inferno
void
screeninit(void)
{
    Mode m;

    m.x = Colmaxx;
    m.y = Colmaxy;
    m.d = Colldepth;
    m.aperture = 0;
    lcdinit(&m);
    if(m.aperture == 0)
        return;
    gscreen.ldepth = 3;
    gscreen.base = (ulong*)m.aperture;
    gscreen.width = Colmaxx/BY2WD;
    gscreen.r = Rect(0, 0, Colmaxxvis, Colmaxy);
    gscreen.clipr = gscreen.r;
    /*
     * For now, just use a fixed colormap:
     * 0 == white and 255 == black
     */
    setcolor(0, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
    setcolor(255, 0x00000000, 0x00000000, 0x00000000);

    gbitblt(&gscreen, Pt(0, 0), &gscreen, gscreen.r, Zero);
    out.pos.x = MINX;
    out.pos.y = 0;
    out.bwid = defont0.info[' '].width;
}
예제 #4
0
파일: 1602.c 프로젝트: hxl9654/C51_Study
void main()
{
	lcdinit();
	lcdshow(0,0,"hello world");
	lcdshow(8,1,"By HXL");
	while(1);
}
예제 #5
0
static int lcdi2c_probe(struct i2c_client *client, const struct i2c_device_id *id)
{

    data = (LcdData_t *) devm_kzalloc(&client->dev, sizeof(LcdData_t),
				      GFP_KERNEL);
    if (!data)
        return -ENOMEM;

    i2c_set_clientdata(client, data);
    sema_init(&data->sem, 1);

    data->row = 0;
    data->column = 0;
    data->handle = client;
    data->backlight = 1;
    data->cursor = cursor;
    data->blink = blink;
    data->deviceopencnt = 0;
    data->major = major;

    lcdinit(data, topo);
    lcdprint(data, "HD44780\nDriver");

    dev_info(&client->dev, "%ux%u LCD using bus 0x%X, at address 0x%X",
	     data->organization.columns,
	     data->organization.rows, busno, address);

    return 0;
}
예제 #6
0
파일: main.c 프로젝트: dw19375/SeniorDesign
/*
 * main.c
 */
int main(void)
{
    WDTCTL = WDTPW | WDTHOLD;	// Stop watchdog timer

    if (CALBC1_1MHZ==0xFF)					// If calibration constant erased
    {
      while(1);                               // do not load, trap CPU!!
    }

	lcdinit();
	uart_init();

	__bis_SR_register(GIE);

//	uint8_t str[8] = {'+','+','+',0x00};
//
//	uart_send_frame(str);
//
//	while( !rx_ok ); // Wait until we have received OK from xbee
//	str[0] = 'A';
//	str[1] = 'T';
//	str[2] = 'A';
//	str[3] = 'P';
//	str[4] = ' ';
//	str[5] = '1';
//	str[6] = 0x0D;
//	str[7] = 0x00;
//	rx_ok = 0;
//	uart_send_frame(str);
//
//	while( !rx_ok );
//	str[2] = 'C';
//	str[3] = 'N';
//	str[4] = ' ';
//	rx_ok = 0;
//	uart_send_frame(str);
//
//	while( !rx_ok );
//
//	// Should be in API mode now
//	uint8_t buf[22] = {0x7E, 0x00, 0x04, 0x08, 0x07, 'W', 'R', 0x00};
//
//	__delay_cycles(10000000);
//	buf[7] = calculate_checksum(buf+3,4);
//
//	uart_send_frame(buf);


	xbee_init("128");
//
//	packet_rx_handler( print_packet );
//
//	xbee_tx_packet( 100, "Hi!", 3 );


	while(1);

	return 0;
}
예제 #7
0
파일: main.c 프로젝트: qinkaiabc/lcd1602
/*
 * main.c
 */
void main(void)
{
    WDTCTL = WDTPW | WDTHOLD;	// Stop watchdog timer
    P1DIR |= 0xff;
    P2DIR |= 0xff;
    lcdinit();
    LCD_write_string(5,0,"Hello!");
	while(1);
}
예제 #8
0
int main(void){
	
	lcdinit();
	goto_xy(0,0);
	lcd_text("hello");
	//lcd_text();
	//lcd_text();
	//lcd_int(10);
	while(1);
	return 0;
}
예제 #9
0
static ssize_t lcdi2c_reset(struct device* dev, struct device_attribute* attr,
			    const char* buf, size_t count)
{
    CRIT_BEG(data, ERESTARTSYS);

    if (count > 0 && buf[0] == '1')
        lcdinit(data, topo);

    CRIT_END(data);
    return count;
}
void main(void)
	{
	 unsigned int HI, LO, TOTAL;
	 unsigned char l, OV, OFR[16] = "Out Of Range...";
	 OV = 0;
	 T0 = 1;
	 TMOD = 0x05;
	 TL0 = 0;
	 TL1 = 0;
	 lcdinit();
	 while(1)
	 	{
		 do
		 	{
start: TR0 = 1;
			 MSDelay(145);
		 	 LO = TL0;
		 	 HI = TH0;
			 HI = HI << 8;
			 TOTAL = HI | LO;
			 Unit[0] = 'H';
			 Unit[1] = 'z';
			 Unit[2] = ' ';
			 Unit[3] = ' ';
			 if(OV == 1)
			 	{
				 TOTAL = TOTAL / 1000;
				 TOTAL = TOTAL + 65;
				 if(TOTAL > 125)
				 	{
					 for(l=0; l<16; l++)
					 	lcddata(OFR[l]);
					 for(l=0; l<16; l++)
					 	lcdcmd(0x10);
					 goto start; 
					 }
				 OV = 0;
				 Unit[0] = 'K';
			 	 Unit[1] = 'H';
			 	 Unit[2] = 'z';
				 Unit[3] = ' ';
				}
		 	 inttoLCD(TOTAL);

		 	 TL0 = 0;
		 	 TH0 = 0;
			}
		 while(TF0 == 0);
		 OV = 1;
		 TR0 = 0;
		 TF0 = 0;
		}
	}
예제 #11
0
void main()
{
    trisb=0x00;
    delay_ms(10);
    lcdinit();
    delay_ms(1000);
    while(1)
    {
        printc("Ganesh");
        delay_ms(1000);
    }
}
예제 #12
0
파일: screen.c 프로젝트: Nurb432/plan9front
void
screeninit(void)
{
	int i;

	/* map the lcd regs into the kernel's virtual space */
	lcd = (struct sa1110regs*)mapspecial(LCDREGS, sizeof(struct sa1110regs));;

	framebuf = xspanalloc(sizeof *framebuf, 0x100, 0);

	vscreen = xalloc(sizeof(ushort)*Wid*Ht);

	lcdpower(1);
	lcdinit();

	gscreen = &xgscreen;

	xgdata.ref = 1;
	i = 0;
	if (landscape) {
		gscreen->r = Rect(0, 0, Ht, Wid);
		gscreen->clipr = gscreen->r;
		gscreen->width = Ht/2;
		xgdata.bdata = (uchar *)framebuf->pixel;
		while (i < Wid*Ht*1/3)	framebuf->pixel[i++] = 0xf800;	/* red */
		while (i < Wid*Ht*2/3)	framebuf->pixel[i++] = 0xffff;		/* white */
		while (i < Wid*Ht*3/3)	framebuf->pixel[i++] = 0x001f;	/* blue */
	} else {
		gscreen->r = Rect(0, 0, Wid, Ht);
		gscreen->clipr = gscreen->r;
		gscreen->width = Wid/2;
		xgdata.bdata = (uchar *)vscreen;
		while (i < Wid*Ht*1/3)	vscreen[i++] = 0xf800;	/* red */
		while (i < Wid*Ht*2/3)	vscreen[i++] = 0xffff;	/* white */
		while (i < Wid*Ht*3/3)	vscreen[i++] = 0x001f;	/* blue */
		flushmemscreen(gscreen->r);
	}
	memimageinit();
	memdefont = getmemdefont();

	out.pos.x = MINX;
	out.pos.y = 0;
	out.bwid = memdefont->info[' '].width;

	blanktime = 3;	/* minutes */

	screenwin();
//	screenputs = bitsyscreenputs;
	screenputs = nil;
}
예제 #13
0
파일: main.c 프로젝트: abbrev/punix
/*
 * initialisation function
 * We start here as soon as we have a stack.
 * Here we initialize the various systems
 * and devices that need to be initialized.
 */
STARTUP(void kmain())
{
	// TODO: move these to the appropriate headers
	void vtinit();
	void grayinit();
	void loadavinit();
	void battinit();
	void usageinit();
	void bogomips();

	calloutinit();
	lcdinit();
	meminit();
	grayinit();
	vtinit();
	linkinit();
	audioinit();
	sched_init();
	procinit();
	bufinit();
	flashinit();
	inodeinit();
	loadavinit();
	battinit();
	usageinit();
	
#if 1
	kprintf("%s build %s\n", uname_sysname, uname_version);
#else
	kprintf("%s v%s\n", uname_sysname, uname_release);
	kputs(
	 "Copyright 2005-2011 Christopher Williams <*****@*****.**>\n"
	 "Some portions copyright 2003, 2005 PpHd\n"
	 "\n"
	 "This program comes with ABSOLUTELY NO WARRANTY.\n"
	 "You may redistribute copies of this program\n"
	 "under the terms of the GNU General Public License.\n"
	 "\n");
#endif
	if (realtime.tv_sec < 1000000000L) { /* before ~2001 */
		extern const unsigned long build_date;
		realtime.tv_sec = build_date;
		realtime.tv_nsec = 0;
	}
	G.seconds = realtime.tv_sec;
	uptime.tv_sec = uptime.tv_nsec = 0;
	spl0();
	bogomips();
}
int main(void) {
	// Vars
	struct fp_dev *device;
	struct fp_driver *driver;
	struct fp_print_data *print_data;
	struct fp_img *img;
	int err;

	// Init the LCD
	lcdinit(0x00, 0x12, 0x20);
	lcd_reset();

	// Init libfprint
	fp_init();

	// Init the keypad
	matrix_init(4, 17, 27, 22, 10, 9, 11, handle_key_press);

	// Signal handler - does an fp_exit() on SIGINT
	init_signals();

	// Get the first fingerprint device
	if ((err = get_fingerprint_device(&device)) < 0 || !device) { // Errorz
		if (err == -1) {
			error("No devices found");
		}
		else if (err == -2) {
			error("Couldn't open the device");
		}

		return 1;
	}

	// Get driver
	driver = fp_dev_get_driver(device);

	// Init message
	printf("Programme started! Device is %s\n\n", fp_driver_get_full_name(driver));

	// Scan the print
	fp_enroll_finger_img(device, &print_data, &img);

	// Deinit libfprint
	fp_exit();

	return 0;
}
void main(void)
{
   cct_init(); 
	 lcdinit();              
   InitTimer0();  
	
	while(1)
	{
		
		if (start==0 && end==1)// vehicle starts its journey by entering at the first line
		{
			
	    if(msCounter==0)
				{
					DisplaytoLCD(secCounter-1);
					
				}
					
			UpdateTimeCounters();
		}
		
		else if ( start==0 && end==0)//vehicle reached finish line and hence the speed is caliculated here
		{			
		  
			if(msCounter==0)
				{
					speed=((float)15/(float)secCounter);
					FloatToLCD(speed);	
				}
				UpdateTimeCounters1();
		}
		else//no vehicle for all the combinations
		{			
			if(msCounter==0)
				{
			    Displaystring();
				}
			UpdateTimeCounters1();// function to make the letters visible fora second and then to refresh
		}
		
	}
}
예제 #16
0
파일: screen.c 프로젝트: Nurb432/plan9front
void
blankscreen(int blank)
{
	int cnt;

	if (blank) {
		lcd->lccr0 &= ~(1<<LEN);	/* disable the LCD */
		cnt = 0;
		while((lcd->lcsr & (1<<LDD)) == 0) {
			delay(10);
			if (++cnt == 100) {
				iprint("LCD doesn't stop\n");
				break;
			}
		}
		lcdpower(0);
	} else {
		lcdpower(1);
		lcdinit();
	}
}
예제 #17
0
int main(void) 
{
    WDTCTL = WDTPW  + WDTHOLD; // Para o WDT(Wath dog Timer)

    // calibrando o clock para trabalhar em 16MHz
    BCSCTL1 = CALBC1_16MHZ;  
    DCOCTL = CALDCO_16MHZ;

    // configurando conversor AD para trabalhar com tensao no pino 4
    ADC10CTL0 &= ~ENC;
    ADC10CTL1 = 4 << 12;
    ADC10CTL0 = SREF_0 + ADC10ON + ENC + ADC10SHT_0;
 
    // configurando LED
    P1DIR |= BIT6;  // EN saida
    P1DIR |= BIT0;  // LED Vermelho
    P1DIR |= BIT7;  // RS saida 
    P2DIR = 0xFF; 
    P1OUT = 0x00;
    lcdinit();
    prints("Batimentos ");
    gotoXy(7,1);
    prints("BPM");
    
    // Configurando interrupcao
    TACCR0 = 32000;  //   16 MHz / 32000 = 500 Hz

    // Usar clock TASSEL_2, no modo UP (MC_1).
    TACTL = TASSEL_2 | MC_1;
  
    // Reseta o timer no fim de contagem(OUTMOD_7) e habilita interrupcao (CCIE)
    TACCTL1 = OUTMOD_7 | CCIE;
   
   // LPM0 (Lower power mode) bota a cpu para dormir com interrupcao habilitada.
    __bis_SR_register(CPUOFF | GIE);

    return 0;
}
void main()
{
unsigned char i=0,j=0,result=0;
unsigned int count;
unsigned char c[15];
unsigned char d[]="42006B1BB8";

signed int amount2=900;

TMOD=0x20;		  // To configure the serial port at 9600 baud rate
TH1=0xFD;
SCON=0X50;
TR1=1;

S1=1;
S2=1;

BUZZPORT=0;
START_POINT=0;
TERMINATE_POINT=0;

lcdinit();
Welcome("AUTOMATIC RFID","CAR PARKING");
DelayMs(1000);

while(1)
{
known:
Welcome("AUTOMATIC RFID","CAR PARKING");
DelayMs(100);

while(S1==0 && S2==0);

if(S2==1)
{
  		while(S2==1);
		if(count>0)
		{
		 count--;
		 ConvertAndDisplay(count,"Thanks for Visit");
		 DelayMs(1000);
			exit_dcMotor();
		 goto known;
	    }
	  	else
		{
		  count=0;
		  ConvertAndDisplay(count,"Thanks for Visit");
			 DelayMs(1000);
			exit_dcMotor();
				 goto known;
	    }
}

if(S1==1)
{
while(S1==1);
for(i=0;i<12;i++)
{
c[i]=0xFF;
}
ConvertAndDisplay(count,"Please Show Card");
DelayMs(100);
while(RI==0);

for(i=0;i<12;i++)			  //command to recv data
{
j=0;
while(RI==0)
{
if(j>=1000)
goto timeout;
DelayMs(1);
j++;
}
c[i]=SBUF+48;
RI=0;
}
timeout:
//result=strncmp(c,d,10);
if(c[7] == '"' && c[8] == 'R' && c[9] == 'f' && c[10] == 'J' && c[11] == '0')
{
result=0;	
}
else
{
	result=1;
}
if(count > 10)
{

		Welcome("Parking is Full","Sorry for Inconvenience");
		buzzer(500);
		DelayMs(1000);
		goto known;
}
else if(result==0)
{
lcdinit();

Welcome("VEHICAL Amount ","Detected:100");
DelayMs(3000);
amount2-=100;
if(amount2>0)
{
ConvertAndDisplay(amount2,"Balance Amount");
dcMotor();
DelayMs(1000);
}
else
{
  amount2=0;
  Welcome("VEHICAL Amount ","BALANCE NIL");
  buzzer(500);
  Welcome("Recharge Your","Card Please");
  while(rc1==1&&rc2==1);
  {		if(rc1==0)
  	{
   		while(rc1==0);
		amount2=900;
		Welcome("Card is recharged","with amount 900");
		DelayMs(2000);
    }
  if(rc2==0)
  {
   	while(rc2==0);
	amount2=500;
	Welcome("Card is recharged","with amount 500");
			DelayMs(2000);
  }
}
}
if(amount2<=400)
{
  Welcome("VEHICAL Amount ","BALANCE LOW");
  buzzer(200);
}
DelayMs(1000);

count++;
lcdcmd(0x01);
DelayMs(10);
ConvertAndDisplay(count,"Number of Cars");
DelayMs(2000);
goto known;
}
else if(result!=0)
{
		Welcome("Card not Matched","Plz Cnt Security");
		buzzer(1000);
		DelayMs(2000);
}
}
}
}
예제 #19
0
void main()
{
unsigned char i=0;
unsigned int j=0;
unsigned char c[15];

TMOD=0x20;		  // Configure the serial port to 9600 baud rate
TH1=0xFD;
SCON=0X50;
TR1=1;
R=0;
lcdinit();
welcome();
bz=1;

while(1)
{
back:

for(i=0;i<15;i++)			  //command to recv data
{
c[i]=0xFF;
}
																    
while(RI==0);

for(i=0;i<15;i++)			  //command to recv data
{
j=0;
while(RI==0)
{
if(j>=1000)
goto timeout;
j++;
}
c[i]=SBUF;
RI=0;
}

timeout:
for(i=0;i<15;i++)
{
if(c[i]=='F' && c[i+1]=='E' && c[i+2]=='0' && c[i+3]=='0' && c[i+4]=='5' && c[i+5]=='E' && c[i+6]=='4' && c[i+7]=='E' && c[i+8]=='c' && c[i+9]=='7'&& c[i+10]=='2'&& c[i+11]=='9')
{
sucessRx();
DelayMs(1000); 
R=1;
bz=0;
DelayMs(1000);
R=0;
bz=1;
DelayMs(1000);
lcdinit();
DelayMs(100);
welcome();

goto back;
}
}
unknown();
DelayMs(2000); 
bz=0;
DelayMs(2000);
bz=1;
DelayMs(1000);
lcdinit();
DelayMs(100);
welcome();
}
}
예제 #20
0
파일: main.c 프로젝트: yunpiao/xiangmu
 void main()
 {
	 float adc_a;
	 float adc_data;
	 int i = 0, k = 0;
	 
	 char send_flag = 0;//1 发送成功  0 重发

	 //  Ds1302Init();	//ds1302初始化函数,更改时间需要用到此函数
	 inituart();
	 init_adc();
	 delayms(1);
	 lcdinit();	
	 charsend("AT+CLTS=1\r\n");	 
	 
	  delayms(200);delayms(200);delayms(200);delayms(200);delayms(200);delayms(200);delayms(200);
	 delayms(200);delayms(200);delayms(200);delayms(200);delayms(200);
	 time_a();//时钟初始化
	 delayms(200);delayms(200);delayms(200);delayms(200);delayms(200);delayms(200);
	 delayms(200);delayms(200);delayms(200);delayms(200);
	 delayms(200);delayms(200);delayms(200);delayms(200);delayms(200);delayms(200);delayms(200);
	 delayms(200);delayms(200);delayms(200);delayms(200);delayms(200);delayms(200);delayms(200);
	 while (1)
	 {
		 while (clk_count_last != clk_count)

		 {
			 if (gprs_allow_flag == 1)
			 {
				 delayms(100);
				 gprs_allow_flag = 0;
				 rec_fin = 0;
					
						    time_a();//时钟初始化
					    
	 delayms(200);delayms(200);delayms(200);delayms(200);delayms(200);
	 time_a();//时钟初始化
	 delayms(200);delayms(200);delayms(200);delayms(200);
	 

				 charsend("AT+CIPSEND=183\r\n");	  delayms(100);
				 charsend("POST /data HTTP/1.1\r\nHost:121.40.171.93\r\nContent-Length:87\r\nAuthorization:Basic dGVzdDp0ZXN0\r\n\r\n");
				 charsend(http_post);
			 }
			 if (gprs_fin_flag == 1&& gprs_fin_flag_2 == 1)
			 {
				
				 gprs_fin_flag = 0;
						    
				 e_gprs = 0;  //互斥访问
				 charsend("ok2222222222222222");
			 }
			 if (gprs_fin_flag == 1 && gprs_fin_flag_1 == 1)
			 {
				 
				 gprs_fin_flag = 0;

				 e_gprs = 0;  //互斥访问
				 charsend("ok11111111");
			 }

						 clk_count_last = clk_count + 1;
		 }
		   clk_count_last = clk_count + 1;
		 	clk_count_last = clk_count_last % 600;
			 //datasend( get_ad());
//	http_post[54] = (int)chao_data_avg_s % 10 + 48;    //传感器数据存在http_post
//	http_post[53] = (int)chao_data_avg_s / 10 % 10 + 48;
//	http_post[51] = (int)chao_data_avg_s / 100 % 10 + 48;
//	http_post[50] = (int)chao_data_avg_s / 100 % 10 + 48;

					  kDisplayListChar(1, 1, myitoa((int)get_ref(),4), 4);
					   kDisplayListChar(1, 2, "13", 6);

					 chao_data[data_count%12] = get_ad();		 ///1024* 5
					tan_data[data_count%12] = get_ref();
					data_count++;		 
					 data_count=data_count%12;

			 
			
			 temper = ReadTemperature();
			 kDisplayListChar(3, 4, strcat(myitoa(temper / 10, 2), "."), 3);
			 kDisplayListChar(5, 4, myitoa(temper % 10, 1), 1);
			   
					

		 //    Ds1302ReadTime();	 		   //时间显示
		 //	time_formchar(time_char);
		 // /********************************************
		 // 	adc_data=get_ad();            //这两句是接压力传感器的处理函数
		 //	range=(adc_data-0x00BD)*0.6; //
		 //*********************************************/
		
			 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

		

			 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

		


		
//		 if (clk_count % 600 % 60 == 0)			   //每分钟
//		 {
//
//			 split(chao_data, 0, 11);
//			 split(tan_data, 0, 11);
//			 chao_data_avg[data_count_avg%10] = average1(chao_data, 4, 7);
//			 tan_data_avg[data_count_avg%10] = average1(tan_data, 4, 7);
//						  data_count++;
//						  data_count_avg=data_count_avg%10;
//						  		 
//			 			 datasend(chao_data_avg[data_count_avg%10]);
//		 }
	
	 }
 }
예제 #21
0
void main(void)
{
	WDTCTL = WDTPW + WDTHOLD; 	// Stop watchdog timer

	P8DIR |= BIT1 + BIT2; 		// Set P8.1 and P8.2 to output direction

	P6DIR = 0xFF;				// configure LCD
	P6OUT = 0x00;				// initialise all pins to low

	lcdinit();
	prints("Switch Interrupt");

///////////////////////////////////////////////////////////////////////////////
	// Set Master Clock to XT2
	P7DIR |= BIT7;                	// MCLK set out to P7.7
	P7SEL |= BIT7;

	//////////////////////// use XT1 32768 Hz ////////////////////////////////////////////
	P5SEL |= BIT4 + BIT5;                       // Select XT1
	UCSCTL6 &= ~XT1OFF;                         // Enable XT1
	UCSCTL6 |= XCAP_3;                          // Internal load cap

	//////////////////////// use XT2 4.0 MHz ////////////////////////////////////////////
	P5SEL |= BIT2 + BIT3;                       // Select XT2
	UCSCTL6 &= ~XT2OFF;                         // Enable XT2
	UCSCTL3 |= SELREF__XT1CLK;                  // FLLref = XT1

	do                                          // Loop until XT1 and XT2 stabilize
	{
		UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);     // Clear XT2, XT1 fault flags
		SFRIFG1 &= ~OFIFG;                      // Clear oscillator fault flag
	} while (SFRIFG1 & OFIFG);                  // Test oscillator fault flag

	UCSCTL6 &= ~(XT2DRIVE0 + XT2DRIVE1);        // Decrease XT2 Drive as it is stabilized
	UCSCTL6 &= ~(XT1DRIVE0 + XT1DRIVE1);        // Decrease XT1 Drive as it is stabilized

	UCSCTL4 |= SELA__XT1CLK + SELS__XT2CLK + SELM__XT2CLK; 	// ACLK = XT1, MCLK = SMCLK = XT2
//	UCSCTL4 |= SELA__XT1CLK + SELM__XT2CLK;         		// ACLK = XT1, MCLK = XT2

	P1DIR |= BIT0;								// Set P1.0 to output direction

	// Timer interrupt
//	TA0CCTL0 = CCIE;							// capture & compare interrupt
//	TA0CCR0 = 0xFFFF;
//	TA0CTL = TASSEL__SMCLK + MC_1 + ID__4;		//	SMCLK, Up to CCR0, /4
//	TA0CTL = TASSEL_1 + MC_1;					//	ACLK

///////////////////////////////////////////////////////////////////////////////
	// interrupt approach
	P2IES |= BIT0 + BIT2; 		// P2.0 and P2.2 Hi/lo edge
//	P2IES &= ~BIT0 & ~BIT2; 	// P2.0 and P2.2 lo/Hi edge
	P2IFG &= ~BIT0 & ~BIT2; 	// P2.0 and P2.2 IFG cleared
	P2IE |= BIT0 + BIT2; 		// P2.0 and P2.2 interrupt enabled

//	while(1)
//	{
//		//_BIS_SR(LPM4_bits + GIE); // Enter LPM4 w/interrupt
//		_BIS_SR(GIE); // Enable Ginterrupt
//		__no_operation();
//	}

//	_enable_interrupt(); //global interrupt
	_BIS_SR(GIE); // Enable Ginterrupt
	for(;;)
	{//
		P1OUT ^= BIT0;
	}
}
예제 #22
0
// Main routine
void main(void) {
    OSCCON = 0x7C;          // Internal Oscillator 16MHz Enabled
    OSCTUNE = 0x5F;	    
    OSCCON2bits.PLLRDY = 1;
    VREFCON1 = 0xE0;		
    T2CON = 0x7B;		
    INTCONbits.GIE = 1;     // Global, peripheral & timer 2 interrupt enable 
    INTCONbits.PEIE = 1;
    PIE1bits.TMR2IE = 1;
    PR2 = 0xff;				// period registor 2 with max value
    VREFCON2 = 0;			// zero brightness
    LED_DIR = 0;			// LED pin on output 
    LED = 1;
    lcdinit();				// Initialize LCD in 4bit mode, ultrasonic and brightness
    lcdcmd(0x01);
    initUltrasonic();
    initBrightness();
    LED = 0;
    while(1)
    {
        readPIR();
        if(resPIR)
        {
            pirIndicate();
            readUltrasonic();
            f1 = 0;
            f2 = 1;
            while(resUS < 100 && resUS > 10)
            {
                T2CONbits.TMR2ON = 1;
                setBrightness();
                if(f2)
                {
                    lcdcmd(0x80);
                    sprintf(line1,"    Welcome !   ");
                    lcdstring(line1);
                    sprintf(line2,"   Chaitanya.   ");
                    lcdcmd(0xc0);
                    lcdstring(line2);
                    msDelay(1000);
                    f2 = 0;
                }
                if(sec >= 60)
                {
                    mn++;
                    sec = 0;
                }
                if(mn >= 60)
                {
                    hr++;
                    mn = 0;
                }
                sprintf(line1,"   Study Time   ");
                sprintf(line2,"    %i:%i:%i    ",hr,mn,sec);
                lcdcmd(0x80);
                lcdstring(line1);
                lcdcmd(0xc0);
                lcdstring(line2);
                eventL();
                eventL();
                readUltrasonic();
                f1 = 1;
            }
            T2CONbits.TMR2ON = 0;
            if(f1)
            {
                sprintf(line1,"   Thank You !  ");
                sprintf(line2,"   Good Bye...! ");
                lcdcmd(0x80);
                lcdstring(line1);
                lcdcmd(0xc0);
                lcdstring(line2);
                msDelay(3000);
                VREFCON2 = 0;
            }
            lcdcmd(0x01);
        }
    }
}
예제 #23
0
void main()
{
	char _msg[32];
		
	P1_5 = 0x00;
		
	_setTime = 10;
	_remainingTime = 20;
	_timerStatus = 0;

	lcdinit();


	
	sprintf(_msg, "FAT TIMER Ver 2 ");
	lcdshowstring(0, _msg);	
	sprintf(_msg, "Starting...     ");
	lcdshowstring(1, _msg);	

	DelayMs(2000);

	_showNum(0);
	_showNum(1);


	while(1)
	{
		//Start / Stop
		if(P1_2 == 0x00)
		{
			DelayMs(2);
			if(P1_2 == 0x00){
				_timerStatus = 1;
				_remainingTime = _setTime;
				showNum(1);
				_timerFunc();
			}
		}
		
	
	
	
		//+ / -
		if(P1_0 == 0x00)
		{
			DelayMs(2);
			if(P1_0 == 0x00)
				{
					if(_setTime > 1)
					{
						_setTime--;
						showNum(0);
						DelayMs(15);
						continue;
					}
				}
		}else
		if(P1_1 == 0x00)
			DelayMs(2);
			if(P1_1 == 0x00)
				{
					if(_setTime < 999)
					{
						_setTime++;
						showNum(0);
						DelayMs(15);
						continue;
					}
				}
	}//while

}
예제 #24
0
static long lcdi2c_ioctl(struct file *file,
			unsigned int ioctl_num,
			unsigned long arg)
{

  char *buffer = (char*)arg, ccb[10];
  u8 memaddr, i, ch;
  long status = SUCCESS;

  CRIT_BEG(data, EAGAIN);

  switch (ioctl_num)
  {
    case LCD_IOCTL_SETCHAR:
      get_user(ch, buffer);
      memaddr = (1 + data->column + (data->row * data->organization.columns)) % LCD_BUFFER_SIZE;
      lcdwrite(data, ch);
      data->column = (memaddr % data->organization.columns);
      data->row = (memaddr / data->organization.columns);
      lcdsetcursor(data, data->column, data->row);
      break;
    case LCD_IOCTL_GETCHAR:
      memaddr = (data->column + (data->row * data->organization.columns)) % LCD_BUFFER_SIZE;
      ch = data->buffer[memaddr];
      put_user(ch, buffer);
      break;
    case LCD_IOCTL_GETPOSITION:
      printk(KERN_INFO "GETPOSITION called\n");
      put_user(data->column, buffer);
      put_user(data->row, buffer+1);
      break;
    case LCD_IOCTL_SETPOSITION:
      get_user(data->column, buffer);
      get_user(data->row, buffer+1);
      lcdsetcursor(data, data->column, data->row);
      break;
    case LCD_IOCTL_RESET:
      get_user(ch, buffer);
      if (ch == '1')
	lcdinit(data, data->organization.topology);
      break;
    case LCD_IOCTL_HOME:
      printk(KERN_INFO "HOME called\n");
      get_user(ch, buffer);
      if (ch == '1')
	lcdhome(data);
      break;
    case LCD_IOCTL_GETCURSOR:
      put_user(data->cursor ? '1' : '0', buffer);
      break;
    case LCD_IOCTL_SETCURSOR:
      get_user(ch, buffer);
      lcdcursor(data, (ch == '1'));
      break;
    case LCD_IOCTL_GETBLINK:
      put_user(data->blink ? '1' : '0', buffer);
      break;
    case LCD_IOCTL_SETBLINK:
      get_user(ch, buffer);
      lcdblink(data, (ch == '1'));
      break;
    case LCD_IOCTL_GETBACKLIGHT:
      put_user(data->backlight ? '1' : '0', buffer);
      break;
    case LCD_IOCTL_SETBACKLIGHT:
      get_user(ch, buffer);
      lcdsetbacklight(data, (ch == '1'));
      break;
    case LCD_IOCTL_SCROLLHZ:
      get_user(ch, buffer);
      lcdscrollhoriz(data, ch - '0');
      break;
    case LCD_IOCTL_GETCUSTOMCHAR:
      get_user(ch, buffer);
      for (i=0; i<8; i++)
	put_user(data->customchars[ch][i], buffer + i + 1);
      break;
    case LCD_IOCTL_SETCUSTOMCHAR:
      for (i = 0; i < 9; i++)
	get_user(ccb[i], buffer + i);
      lcdcustomchar(data, ccb[0], ccb+1);
      break;
    case LCD_IOCTL_CLEAR:
      get_user(ch, buffer);
      if (ch == '1')
	lcdclear(data);
      break;
    default:
      printk(KERN_INFO "Unknown IOCTL\n");
      break;
  }
  CRIT_END(data);

  return status;
}