2024年2月4日发(作者:)
江西渝州科技职业学院
按键数码管程序
// Target : M16
// Crystal: 4.0000Mhz
#include
#include
#define huang1 (PINB&BIT(PB0))
#define huang2 (PINB&BIT(PB1))
#define huang3 (PINB&BIT(PB2))
#define huang4 (PINB&BIT(PB3))
unsigned char xianshishuju[8];
unsigned char key=16; //16 表示无效键值
void port_init(void)
{
PORTA = 0xff;
DDRA = 0xff;
PORTB = 0xff;
DDRB = 0xf0;
PORTC = 0x00; //m103 output only
DDRC = 0xff;
PORTD = 0x00;
DDRD = 0x00;
}
//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
port_init();
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x00; //timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}
//
void delay(unsigned char m)
{
unsigned char i,j;
for(i=0;i 1 小强出版 江西渝州科技职业学院 for(j=0;j<570;j++); } unsigned char const duanma[]={ 0XFC,/*0*/ 0x60,/*1*/ 0xDA,/*2*/ 0xF2,/*3*/ 0x66,/*4*/ 0xB6,/*5*/ 0xBE,/*6*/ 0xE0,/*7*/ 0xFE,/*8*/ 0xF6/*9*/}; void baweixianshishuju(void) { unsigned char i; for(i=0;i<8;i++) { PORTC=~BIT(i); PORTA=duanma[xianshishuju[i]]; delay(1); PORTA=0X00; } } void main(void) { unsigned char i; init_devices(); //insert your functional code while(1) { // for(i=0;i<10;i++)baweixianshishuju(); PORTB=0XEF; if(!huang1) key=3; if(!huang2) key=6; if(!huang3) key=9; PORTB=0XDF; if(!huang1) key=2; if(!huang2) key=5; if(!huang3) key=8; if(!huang4) key=0; PORTB=0XBF; 2 小强出版 江西渝州科技职业学院 if(!huang1) key=1; if(!huang2) key=4; if(!huang3) key=7; do{baweixianshishuju();PORTB=0X0F;} while(PINB!=0x0F); if(key<10) { xianshishuju[0]=xianshishuju[1]; xianshishuju[1]=xianshishuju[2]; xianshishuju[2]=xianshishuju[3]; xianshishuju[3]=xianshishuju[4]; xianshishuju[4]=xianshishuju[5]; xianshishuju[5]=xianshishuju[6]; xianshishuju[6]=xianshishuju[7]; xianshishuju[7]=key; key=16; } baweixianshishuju(); } } 3 小强出版
发布者:admin,转转请注明出处:http://www.yc00.com/news/1707020314a1473866.html
评论列表(0条)