<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > MEGA16游戲開發(fā)板驅(qū)動

          MEGA16游戲開發(fā)板驅(qū)動

          作者: 時間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
          #include
          #include
          #define uchar unsigned char
          #define uint unsigned int
          #pragma interrupt_handler power_off:2
          #define EN_ PORTB&=~BIT(2)
          #define EN PORTB|=BIT(2)
          #define LE PORTB|=BIT(3) //高電平選通573
          #define LE_ PORTB&=~BIT(3) //低電平鎖存573
          #define LEDEN PORTB|=BIT(4) //高電平選通led10
          #define LEDEN_ PORTB&=~BIT(4)//低電平禁止led10
          #define RONCS PORTB|=BIT(5) //高電平選通rom
          #define ROMCS_ PORTB&=~BIT(5) //低電平禁止rom
          #define KEYEN DDRD|=BIT(7) //高電平選通導(dǎo)航鍵盤
          #define KEYEN_ DDRD&=~BIT(7) //低電平禁止導(dǎo)航鍵盤
          #define MAC_ PORTD&=~BIT(0)//開啟蜂鳴器
          #define MAC PORTD|=BIT(0) //關(guān)閉蜂鳴器
          #define CE PORTD|=BIT(1)
          #define CE_ PORTD&=~BIT(1)
          #define IO PORTD|=BIT(2)
          #define IO_ PORTD&=~BIT(2)
          #define SCLK PORTD|=BIT(3)
          #define SCLK_ PORTD&=~BIT(3)
          #define DATC PORTC
          extern dat[]={1,9,3,7};
          uchar tab1[4][4][16]={
          {{"選項一:涂鴉板 "},{"選項二:搖獎機 "},{"選項四:貪吃蛇 "},{"選項三:退出游戲"}},
          {{"涂鴉板使用規(guī)則—"},{"移動使用導(dǎo)航鍵 "},{"提放筆:按ok鍵"},{"返回請按:B 鍵"}},
          {{"搖獎機使用規(guī)則—"},{" ok鍵開始 "},{" ok鍵停止 "},{"得分為最終停止值"}},
          {{"貪吃蛇使用規(guī)則—"},{"移動使用導(dǎo)航鍵 "},{"結(jié)束游戲按:B鍵"},{"吃閃動的點會變長"}},
          };

          extern png[5][8]={
          {0x00,0x40,0x42,0x7E,0x7E,0x42,0x40,0x00},
          {0x0C,0x12,0x22,0x44,0x44,0x22,0x12,0x0C},
          {0x02,0x3E,0x42,0x40,0x40,0x42,0x3E,0x02},
          {0x00,0x04,0x02,0xA2,0x12,0x0C,0x00,0x00},
          {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
          };
          const xy[]={0x80,0x90,0x88,0x98};
          const xy3[]={0x83,0x93,0x8b,0x9b};
          const tuan[]={0x05,0x00,0x0e,0x0f};
          const tab_f[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xD8,0x80,0x90};
          const wela_f[]={0x01,0X02,0X04,0X08};
          uchar dat_yj=0,dat_yj1=99,ten_f=0;
          extern dat_d[]={2,0,1,1,10,1,1,10,1,9};
          extern time[]={1,2,10,0,0,10,0,0};
          extern tem[]={0,0,0,0};
          extern lum[]={0,0,0,0,0};
          extern vol[]={0,0,0,0};
          uchar dat_f=0x00,ILU=0,ILU1=0,tyx=0x00,tyy=0x00,tyb=0,yj_f=0,yj_y=0,yj_y1=0;
          uchar flag=0x00,flag_right=0x00,dat_k=0x00,sleep=0;//flag=0,主菜單,1涂鴉,2搖獎機,3音樂4電子書9關(guān)機
          void delay(uint zip)
          {
          zip=zip*10;
          while(zip--);
          }
          void delayms(uint zip)
          {
          uint rar;
          for(;zip>0;zip--)
          for(rar=600;rar>0;rar--);
          }
          void reset()//任何子程序退出處理
          {
          PORTA=0X00;
          DDRC=0X00;
          LE_;
          ROMCS_;
          LEDEN_;
          KEYEN_;
          PORTD|=BIT(7);
          }
          void dat_san()
          {
          dat[0]=dat_yj0/10;
          dat[1]=dat_yj;
          dat[2]=dat_yj10/10;
          dat[3]=dat_yj1;
          }
          void dat_show()
          {
          uchar i;
          DDRB=0XFF;LE;DDRC=0Xff;DDRA=0XFF;
          dat_san();
          for(i=0;i<4;i++)
          {
          LE;
          PORTA=wela_f[i];
          LE_;
          PORTA=0X00;
          PORTC=tab_f[dat[i]];
          delay(100);
          DATC=0Xff;
          }
          reset();
          }
          void write_com(uchar com)
          {
          PORTB&=~BIT(0);
          PORTB&=~BIT(1);
          LE;
          PORTA=com;
          LE_;
          PORTA=0X00;
          PORTB|=BIT(2);
          delay(1);
          PORTB&=~BIT(2);
          delay(3);
          }

          void write_dat(uchar dat)
          {
          PORTB|=BIT(0);
          PORTB&=~BIT(1);
          LE;
          PORTA=dat;
          LE_;
          PORTA=0X00;
          PORTB|=BIT(2);
          delay(1);
          PORTB&=~BIT(2);
          delay(3);
          }
          void init()
          {
          LE;
          write_com(0X38);//設(shè)置16*2顯示,5*7點陣,8位數(shù)據(jù)口
          delay(5);
          write_com(0X0c);//0000 1(100),開顯示,不顯光標(biāo),不閃光標(biāo)
          delay(5);
          write_com(0X06);//0000 01(10),指針加1,整屏不移
          delay(5);
          }
          void choose_flag()
          {
          uchar i;
          for(i=0;i<4;i++)
          {
          write_com(xy3[i]);
          delay(4);
          if(flag==i)write_dat(0x12);
          else write_dat(0x20);
          delay(5);
          }
          }
          void printf(uchar ovi)
          {
          uchar ovm,ovp;
          init();
          for(ovm=0;ovm<4;ovm++)
          {
          write_com(xy[ovm]);
          delay(5);
          for(ovp=0;ovp<16;ovp++)
          {
          write_dat(tab1[ovi][ovm][ovp]);
          delay(5);
          }
          }
          if(flag_right==0)choose_flag();
          reset();
          }
          void clean()
          {
          uchar pp,qq;
          init();
          for(pp=0;pp<4;pp++)
          {
          write_com(xy[pp]);
          delay(10);
          for(qq=0;qq<17;qq++)
          {
          write_dat(0x20);
          delay(6);
          }
          }
          delay(20);
          reset();
          }
          void init_128()
          {
          write_com(0x30);//基本指令集
          write_com(0x0f);//0000,1100 后兩位為設(shè)置光標(biāo)
          }
          void write_1302(uchar add,uchar dat)
          {
          uchar i;

          }
          uchar read_1302(uchar add)
          {
          uchar i,temp;

          return temp;
          }

          void init_130()
          {
          write_1302(0x84,0x00);
          write_1302(0x80,0x00);
          write_1302(0x90,0xa0);
          }
          void brush()
          {
          time[7]=read_1302(0x81);
          time[6]=read_1302(0x81)/16;
          time[4]=read_1302(0x83);
          time[3]=read_1302(0x83)/16;
          time[1]=read_1302(0x85);
          time[0]=read_1302(0x85)/16;
          dat_d[9]=read_1302(0x87)/16;
          dat_d[8]=read_1302(0x87);
          dat_d[6]=read_1302(0x89)/16;
          dat_d[5]=read_1302(0x89);
          dat_d[3]=read_1302(0x8d)/16;
          dat_d[2]=read_1302(0x8d);
          }
          void sends(uchar addxy,uchar *str)
          {
          uchar temp;
          init();
          write_com(xy[addxy-1]);
          temp=*str;
          while(temp!=0x00)
          {
          write_dat(temp);
          temp=*(++str);
          delay(4);
          }
          reset();
          }
          void ten_led(uchar t_f)
          {
          LE;
          DDRD&=~BIT(7);
          if(t_f>0)if(ten_f>9)ten_f=0;
          if(t_f<1)if(ten_f<1)ten_f=10;
          if(t_f<1)ten_f--;
          if(ten_f<8)PORTA=BIT(ten_f);
          DDRC=0XFF;
          if(ten_f==8)PORTC|=BIT(0);
          if(ten_f==9)PORTC|=BIT(1);
          PORTB|=BIT(4);
          if(t_f>0)ten_f++;

          delay(100);
          reset();
          }
          void png_show()
          {
          uchar i;
          const tab[]={0xfe,0xfd,0xfb,0xF7,0xef,0xdf,0xbf,0x7F};
          PORTC=0XFF;
          for(i=0;i<8;i++)
          {
          PORTB|=BIT(3);
          PORTA=tab[i];
          PORTB&=~BIT(3);
          PORTA=png[ILU][i];
          delay(250);
          PORTA=0X00;
          }
          if(flag_right==0)ILU1++;
          if(ILU1==400){ILU1=0;ILU++;}
          if(ILU>4)ILU=0;
          reset();
          }
          void printf1()
          {
          uchar i;
          LE;
          init_128();
          sends(0x80,"DATA:");
          for(i=0;i<10;i++)
          {
          write_dat(dat[i]+0x30);
          }
          sends(0x90,"TIME:");
          for(i=0;i<8;i++)
          {
          write_dat(time[i]+0x30);
          }
          sends(0x88,"LUMEN:");
          for(i=0;i<5;i++)
          {
          write_dat(lum[i]+0x30);
          }
          sends(0," lm");
          sends(0x98,"");
          for(i=0;i<4;i++)
          {
          write_dat(tem[i]+0x30);
          if(i==1)sends(0,".");
          }
          sends(0," ℃");
          for(i=0;i<4;i++)
          {
          write_dat(vol[i]+0x30);
          if(i==1)sends(0,".");
          }
          sends(0," V");
          reset();

          }
          void key_init()
          {
          LE;
          PORTA=0X00;
          LE_;
          KEYEN;
          PORTD&=~BIT(7);
          DDRC=0X00;
          PORTC=0XFF;
          }
          uchar diskey()
          {
          key_init();
          if(PINC==0XFF);
          else
          {
          MAC_;
          dat_k=PINC;
          while(PINC!=0XFF){{dat_show();png_show();};MAC;DDRC=0X00;key_init();};
          }
          reset();
          return dat_k;
          }
          void power_down()
          {
          delay(100);
          clean();
          sends(2," Good_bye!");
          sends(3,"Made_from_CuAuAl");
          PORTD|=BIT(5);
          OCR1A=90000;
          OCR1B=50;
          delayms(6000);
          PORTD&=~BIT(5);
          clean();
          asm("sleep");
          }

          上一頁 1 2 下一頁

          關(guān)鍵詞: MEGA16開發(fā)板驅(qū)

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();