第4のクラスのコード・ブルーブリッジカップマイクロコントローラ

//自分のドライブを追加
 
#include <ad.h>
の#define U8 unsigned char型
の#define U16 unsigned int型
U8 YI、ER、SAN、SI、ウー、劉、チー、BA。
U16コードドゥアン[] = {0x3fを、0x06,0x5b、0x4f、0x66,0x6d、0x7d、0x07の、
     から0x7f、0x6f、0x77,0x7c、0x39,0x5e、0x79,0x71,0x00,0X40,0xbf}。
U16 shijian;
U8のdengliang、jidianqikai。
U16のchushuiliang。
ボイドDelay1ms()//@11.0592MHz
{
 unsigned char型I、J。
 _nop_()。
 _nop_()。
 _nop_()。
 I = 11;
 J = 190;
 実行
 {
  一方(--j)。
 }一方(--I)。
}
ボイドallinit()
{
  P2 = 0x80を、
 P0 = 0xFFで、
 P2 = 0xA0を、
 P0 = 0x00の;
}
)(表示を無効
{
  P2 = 0xC0の、
 P0 = 0x01で、
 P2 = 0xFFで、
 P0 =〜ドゥアン[イル];
 Delay1ms() ;
 
 P2 = 0xC0の、
 P0 = 0x02の;
 P2 = 0xFFで、
 P0 =〜ドゥアン[ER];
 Delay1ms();
 
 P2 = 0xC0の、
 P0 = 0x04を、
 P2 = 0xFFで、
 P0 =〜ドゥアン[サン];
 Delay1ms();
 
 P2 0xC0の=;
 P0 = 0x08に、
 P2 = 0xFFで、
 P0 =〜ドゥアン[シリコン];
 Delay1ms();
 
 P2 = 0xC0の、
 P0 = 0x10を、
 P2 = 0xFFで、
 P0 =〜ドゥアン[ウー];
 Delay1ms()。
 
 IF(jidianqikai == 1)
 {
 P2 = 0xC0の、
 P0 = 0x20に、
 P2 = 0xFFで、
 P0 =〜ドゥアン[劉];
 Delay1ms();
 }
 そうIF(jidianqikai == 0)
 {
 P2 = 0xC0の、
 P0 = 0x20に、
 0xFFの= P2;
 P0 =〜(ドゥアン[劉] |は0x80);
 Delay1ms();
 }
 P2 = 0xC0の、
 P0 = 0x40の;
 P2 = 0xFFで、
 P0〜ドゥアン= [チー];
 Delay1ms()。
  
 
 P2 = 0xc0から。
 P0 = 0x80を;
 P2 = 0xFFを、
 P0 =〜ドゥアン[BA]。
 Delay1ms();
 
 
}
ボイドanjian()
{
  U8 DAT = 0。
 IF(P30 == 0)
 {
   Delay1ms()。
  (P30 == 0)であれば
  {
     DAT = 1。
   (P30 == 0)、一方、
  }
 }
 
 もし(P31 == 0)
 {
   Delay1ms()。
  (P31 == 0)であれば
  {
     DAT = 2。
   (P31 == 0)、一方、
  }
 }
 
 もし(P32 == 0)
 {
   Delay1ms()。
  (P32 == 0)であれば
  {
     DAT = 3。
   (P32 == 0)、一方、
  }
 }
 
 IF(P33 == 0)
 {
   Delay1ms()。
  (P33 == 0)であれば
  {
     DAT = 4。
   (P33 == 0)、一方、
  }
 }
 もし(DAT == 1 && jidianqikai == 0)
 {
    shijian = 0。
  chushuiliang = 0;
 }
 (DAT == 1)であれば
 { 
  
  TR0 = 1。
   jidianqikai = 1。
 }
 
 IF(DAT == 2)
 {
  
   jidianqikai = 0。
 }
}
U8再()
{
 U8 DAT。
  IIC_Start();
 IIC_SendByte(0x90を)。
  IIC_WaitAck();
 IIC_SendByte(0×01)。
  IIC_WaitAck();
 IIC_Stop();
   IIC_Start();
 IIC_SendByte(0x91を)。
  IIC_WaitAck();
DAT = IIC_RecByte()。
 IIC_WaitAck();
 IIC_Stop();
 DATを返します。
}
ボイドguangmindianzu()
{
 U8 DAT、
 DAT =再();
 IF(DAT <64)
 {
   P2 = 0x80を、
  P0 = 0x7Fの;
  P2 = 0x00で;
 }
 そうIF(DAT> = 64)
 {
   P2 = 0x80を、
  P0 = 0xFFで;
  P2 = 0x00の;
 }
  
  
}
ボイドliushui()
{
  イー16 =;
 ER = 18であり、
 サン= 5;
 のSi = 0;
 ウー= chushuiliang / 100;
 リュー=%100/10をchushuiliang;
 チー= chushuiliang 10%;
 BA = 0;
 
}
ボイドfeiyong()
{
    イー16 =;
 ER = 18であり、
 サン= 5;
 のSi = 0;
 ウー= chushuiliang 5 * / 1000。
 = * 5%chushuiliang劉100分の1000;
 チー= chushuiliang 5 * 100%/ 10;。
 。BA = 10%* 5 chushuiliang;
}
空Timer0Init(無効)//[email protected]
{
 AUXR | = 0x80を; // ????? 1T?
 TMOD&= 0xF0が、// ???????
 TL0 = 0xCD。// ??????
 TH0 =は0xD4; // ??????
 TF0 = 0; // ?? TF0 ??
 TR0 = 0;
ET0 = 1。
EA = 1。
 // ??? 0 ????
}

メインボイド()
{
 Timer0Init();
  allinit();
 一方、(1)
 {
  guangmindianzu();
   IF(jidianqikai == 1)
  {
    
    P2 = 0xA0を、
   P0 = 0x10を、
   P2 = 0x00で、
   liushui();
  }
  そうIFを( == 0 jidianqikai)
  {
   TR0 = 0;
    P2 = 0xA0を、
   P0 = 0x00で、
   P2 = 0×00;
   ()をfeiyong;
  }
  表示();
  anjian();
 }
}
ボイドding0()割り込み1。
{
   TL0 = 0xCD; // ??????
 TH0は=は0xD4; 
 Shijian ++;
 IF(Shijian == 1000)
 {
   = 0 Shijian;
  。chushuiliang + = 1;
 }
 IF(chushuiliang> 999)
 {
   jidianqikai = 0;
 }
}

おすすめ

転載: www.cnblogs.com/a1113775906/p/12121614.html