日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開(kāi)發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開(kāi)發(fā)
培訓(xùn)信息
贊助商
義隆C語(yǔ)言寫(xiě)的一個(gè)簡(jiǎn)單小家電控制器
義隆C語(yǔ)言寫(xiě)的一個(gè)簡(jiǎn)單小家電控制器
 更新時(shí)間:2009-7-20 15:42:00  點(diǎn)擊數(shù):0
【字體: 字體顏色
#include "EM78x156xx.h"

#define DISI()    _asm{disi}
#define ENI()    _asm{eni}
#define SLEP()    _asm{slep}
#define NOP()    _asm{nop}
#define WDTC()  _asm{wdtc}

#define uchar unsigned int
#define uint  unsigned short


#define Key  R53
#define Bz   R51
#define Out  R50
#define Com1 R60
#define Com2 R61
#define Com3 R62
#define Seg1 R63
#define Seg2 R64
#define Seg3 R65
#define Seg4 R66
#define Seg5 R67
#define InCom1 (P6CR|=0x01)
#define InCom2 (P6CR|=0x02)
#define InCom3 (P6CR|=0x04)
#define OutCom1 (P6CR&=0x0E)
#define OutCom2 (P6CR&=0x0D)
#define OutCom3 (P6CR&=0x0B)

bit OkFlag;
bit BzOutFlag;
bit StartFlag;
bit KeyFlag;
uchar Count @0x2F;
uint BzOutTime;
uint TimeFlag;
uchar Minute;
uchar Second;
uchar BiasTime;

const uchar Number1[10]={
0x6F,0x06,0x3D,0x37,0x56,0x73,0x7B,0x26,0xFF,0x77};
const uchar Number2[10]={
0xF7,0x03,0x5E,0x1F,0x8B,0x9D,0xFD,0x13,0xFF,0xBF};



void SysInt(void);
void KeyProcess(void);
void Delayms(uint ms);
void BzOut(void);
void LcdDisplay(uchar Num1,uchar Num2);
void TimeDisplay(void);

void main()
{
SysInt();
while(1)
{
  KeyProcess();
  TimeDisplay();
}
}

void TimeDisplay(void)
{
uchar temp1,temp2;
//Count++;
Out=!StartFlag;
if(BzOutFlag==1)
{
  if((BzOutTime%1000)==0)
  BzOut();
  if(BzOutTime>=20000)
  {
   BzOutTime=0;
   BzOutFlag=0;
  }
  BzOutTime++;
}
if((Count>=249)&&(StartFlag==1))//Count>=249
{
  Count=0;
  if(Second>0)
  Second--;
  if(Second==0)
  {
   if(Minute>0)
   {
    Minute--;
    Second=60;
   }
   else
   {
    StartFlag=0;
    BzOutFlag=1;
    OkFlag=1;
   }
  }
}
if(OkFlag==1)
{
  LcdDisplay(0x0,0x0);
}
else if(Minute>=1)
  {
   if((Minute>=1)&&(Second>0)&&(StartFlag==1))
   {
    temp2=(Minute+1)/10;
    temp1=(Minute+1)%10;
   }
   else
   {
    temp2=Minute/10;
    temp1=Minute%10;
   }
   
   if((StartFlag==1)&&(Count>125))
   {
    LcdDisplay(0x00,0x00);
   }
   else
   {LcdDisplay(Number1[temp1],Number2[temp2]);}
  }
  else
  {
   temp2=Second/10;
   temp1=Second%10;
   LcdDisplay(Number1[temp1],Number2[temp2]);
  }
  

}

void SysInt(void)
{
WDTCR=0;
DISI();
_asm
{
  mov a,@0x44
  contw
}    
ISR=0;
IMR=0x01;
TCC=5;
PHCR=0xFF;
PDCR=0xFF;
P5CR=0x08;
P6CR&=0x07;
InCom1;
InCom2;
InCom3;
Seg1=0;
Seg2=0;
Seg3=0;
Seg4=0;
Seg5=0;
BiasTime=0;
BzOutTime=0;
TimeFlag=0;
OkFlag=0;
StartFlag=0;
BzOutFlag=0;
Count=0;
Second=0;
Minute=0;
Bz=0;
Out=1;
KeyFlag=0;
ENI();
}

void LcdDisplay(uchar Num1,uchar Num2)
{
switch(BiasTime)
{
  case 0:
        OutCom1;
        Com1=1;
        InCom2;
        InCom3;
        if((Num1&0x01)==0)Seg1=1;
        else Seg1=0;
        if((Num1&0x08)==0)Seg2=1;
        else Seg2=0;
        if((Num2&0x01)==0)Seg3=1;
        else Seg3=0;
        if((Num2&0x04)==0)Seg4=1;
        else Seg4=0;
        if((Num2&0x20)==0)Seg5=1;
        else Seg5=0;
        break;
   case 1:  
        OutCom1;
        Com1=0;
        InCom2;
        InCom3;
        if((Num1&0x01)==0)Seg1=0;
        else Seg1=1;
        if((Num1&0x08)==0)Seg2=0;
        else Seg2=1;
        if((Num2&0x01)==0)Seg3=0;
        else Seg3=1;
        if((Num2&0x04)==0)Seg4=0;
        else Seg4=1;
        if((Num2&0x20)==0)Seg5=0;
        else Seg5=1;
        break;
   case 2:
        InCom1;
        OutCom2;
        Com2=1;
        InCom3;
        if((Num1&0x02)==0)Seg1=1;
        else Seg1=0;
        if((Num1&0x10)==0)Seg2=1;
        else Seg2=0;
        if((Num2&0x02)==0)Seg3=1;
        else Seg3=0;
        if((Num2&0x08)==0)Seg4=1;
        else Seg4=0;
        if((Num2&0x40)==0)Seg5=1;
        else Seg5=0;
        break;
   case 3:
        InCom1;
        OutCom2;
        Com2=0;
        InCom3;
        if((Num1&0x02)==0)Seg1=0;
        else Seg1=1;
        if((Num1&0x10)==0)Seg2=0;
        else Seg2=1;
        if((Num2&0x02)==0)Seg3=0;
        else Seg3=1;
        if((Num2&0x08)==0)Seg4=0;
        else Seg4=1;
        if((Num2&0x40)==0)Seg5=0;
        else Seg5=1;
        break;
  case 4:
        InCom1;
        InCom2;
        OutCom3;
        Com3=1;
        if((Num1&0x04)==0)Seg1=1;
        else Seg1=0;
        if((Num1&0x20)==0)Seg2=1;
        else Seg2=0;
        if((Num1&0x40)==0)Seg3=1;
        else Seg3=0;
        if((Num2&0x10)==0)Seg4=1;
        else Seg4=0;
        if((Num2&0x80)==0)Seg5=1;
        else Seg5=0;
        break;
  case 5:
        InCom1;
        InCom2;
        OutCom3;
        Com3=0;
        if((Num1&0x04)==0)Seg1=0;
        else Seg1=1;
        if((Num1&0x20)==0)Seg2=0;
        else Seg2=1;
        if((Num1&0x40)==0)Seg3=0;
        else Seg3=1;
        if((Num2&0x10)==0)Seg4=0;
        else Seg4=1;
        if((Num2&0x80)==0)Seg5=0;
        else Seg5=1;
default:break;
}    
Delayms(1);
BiasTime++;
if(BiasTime>=6)
BiasTime=0;
}

void KeyProcess(void)
{
if((TimeFlag>0)&&(TimeFlag<2000))
{
  OkFlag=0;
  TimeFlag++;
  if(TimeFlag>=2000)
  StartFlag=1;
}

if((Key==0)&&(KeyFlag==0)&&(StartFlag==0))
{
  TimeFlag=1;
  Minute++;
  if(Minute>99)
  Minute=0;
  if(OkFlag==1)
  {
   //OkFlag=0;
  // Minute=0;
   SysInt();
  }
  KeyFlag=1;
}
else
{
  if(Key==1)
  KeyFlag=0;
  
  if((Key==0)&&(KeyFlag==0)&&(StartFlag==1))
  {
   SysInt();
   KeyFlag=1;
  }
}
}

void BzOut(void)
{
uchar i,j;
for(i=0;i<150;i++)
{
  Bz=!Bz;
  for(j=0;j<58;j++)
  {NOP();NOP();}
}
  /*Delayms(50);
  for(i=0;i<100;i++)
{
  Bz=!Bz;
  for(j=0;j<50;j++)
  {NOP();NOP();}
}*/
  Bz=0;
}

void Delayms(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<120;j++)
NOP();
}


void _intcall interrupt_l(void) @0x08:low_int 0
{
  _asm
   {
      //save A --> 0x1F ; R3 --> 0x3E (ram bank 1); R4 --> 0x3F (ram bank 1)
      MOV 0X1F,A   ;backup A to 0x1F
      SWAPA 0X04   ;backup R4 to 0x3F at bank 3
      MOV 0X3F,A   ;backup R4 to 0x3F at bank 3
      SWAPA 0X03   
      MOV 0X3E,A   ;backup R3 to 0x3E at bank 3
   }     
}
void _intcall interrupt(void) @int 0
{
if(TCIF==0)return;
DISI();
ISR=0;
  _asm
{
  mov a,@0x44
  contw
}    
TCC=5;
_asm
{
  SWAPA 0X3E   ;restore R3
  MOV 0X03,A
  SWAPA 0X3F   ;restore R4
  MOV 0X04,A
  SWAP 0X1F    ;restore A
  SWAPA 0X1F
  }
  _asm{INC 0X2F}
ENI();
}
  • 上一篇: EMC單片機(jī)|EMC單片機(jī)開(kāi)發(fā)工具|EMC單片機(jī)代理
  • 下一篇: Em78p458/9比較器功能測(cè)試程序
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1