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

📄 kbd.c

📁 一个非常好的电源设计程序
💻 C
字号:
/* vim: set sw=8 ts=8 si : *//********************************************** Author: Guido Socher, Copyright: GPL * * read the keyboard**********************************************/#include <avr/io.h>#include "avr_compat.h"#include "lcd.h"// it looks like output port settings need time to propagate. Maybe// caused by input capacitors on the lcd which connected there too.static void kbd_wait(void){	unsigned char i=100;	while(i){i--;}}void init_kbd(void) {	/* init lcd sets those already so we comment them out here:	sbi(DDRB,PB7); // output line	sbi(DDRB,PB2); // output line	sbi(DDRB,PB1); // output line	sbi(DDRB,PB0); // output line	*/	cbi(DDRB,PINB5); // input line	cbi(DDRB,PINB3); // input line	sbi(PORTB,PINB5); // internal pullup resistor on	sbi(PORTB,PINB3); // internal pullup resistor on}unsigned char check_u_button(int *u) {	// check U+ button:	sbi(PORTB,PB7); 	sbi(PORTB,PB2);	sbi(PORTB,PB1);	cbi(PORTB,PB0);	kbd_wait();	if (bit_is_clear(PINB,PINB5)){		(*u)++;		return(1);	}	// check U- button:	sbi(PORTB,PB7); 	sbi(PORTB,PB2);	cbi(PORTB,PB1);	sbi(PORTB,PB0);	kbd_wait();	if (bit_is_clear(PINB,PINB5) && (*u)>0){		(*u)--;		if((*u)<0){			(*u)=0;		}		return(1);	}	return(0);}unsigned char check_i_button(int *i) {	// check I+ button:	sbi(PORTB,PB7); 	cbi(PORTB,PB2);	sbi(PORTB,PB1);	sbi(PORTB,PB0);	kbd_wait();	if (bit_is_clear(PINB,PINB5)){		(*i)++;		return(1);	}	// check I- button:	cbi(PORTB,PB7); 	sbi(PORTB,PB2);	sbi(PORTB,PB1);	sbi(PORTB,PB0);	kbd_wait();	if (bit_is_clear(PINB,PINB5) && (*i)>0){		(*i)--;		if((*i)<0){			(*i)=0;		}		return(1);	}	return(0);}unsigned char check_store_button(void) {	// check store button:	cbi(PORTB,PB2);	kbd_wait();	if (bit_is_clear(PINB,PINB3)){		return(1);	}	return(0);}

⌨️ 快捷键说明

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