亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? key.i

?? 本資料為基于單片機的AD按鍵的程序。能用單IO口實現多按鍵處理
?? I
字號:
// CodeVisionAVR C Compiler
// (C) 1998-2004 Pavel Haiduc, HP InfoTech S.R.L.

// I/O registers definitions for the ATmega32


#pragma used+
#pragma used+
sfrb TWBR=0;
sfrb TWSR=1;
sfrb TWAR=2;
sfrb TWDR=3;
sfrb ADCL=4;
sfrb ADCH=5;
sfrw ADCW=4;      // 16 bit access
sfrb ADCSRA=6;
sfrb ADCSR=6;     // for compatibility with older code
sfrb ADMUX=7;
sfrb ACSR=8;
sfrb UBRRL=9;
sfrb UCSRB=0xa;
sfrb UCSRA=0xb;
sfrb UDR=0xc;
sfrb SPCR=0xd;
sfrb SPSR=0xe;
sfrb SPDR=0xf;
sfrb PIND=0x10;
sfrb DDRD=0x11;
sfrb PORTD=0x12;
sfrb PINC=0x13;
sfrb DDRC=0x14;
sfrb PORTC=0x15;
sfrb PINB=0x16;
sfrb DDRB=0x17;
sfrb PORTB=0x18;
sfrb PINA=0x19;
sfrb DDRA=0x1a;
sfrb PORTA=0x1b;
sfrb EECR=0x1c;
sfrb EEDR=0x1d;
sfrb EEARL=0x1e;
sfrb EEARH=0x1f;
sfrw EEAR=0x1e;   // 16 bit access
sfrb UBRRH=0x20;
sfrb UCSRC=0X20;
sfrb WDTCR=0x21;
sfrb ASSR=0x22;
sfrb OCR2=0x23;
sfrb TCNT2=0x24;
sfrb TCCR2=0x25;
sfrb ICR1L=0x26;
sfrb ICR1H=0x27;
sfrb OCR1BL=0x28;
sfrb OCR1BH=0x29;
sfrw OCR1B=0x28;  // 16 bit access
sfrb OCR1AL=0x2a;
sfrb OCR1AH=0x2b;
sfrw OCR1A=0x2a;  // 16 bit access
sfrb TCNT1L=0x2c;
sfrb TCNT1H=0x2d;
sfrw TCNT1=0x2c;  // 16 bit access
sfrb TCCR1B=0x2e;
sfrb TCCR1A=0x2f;
sfrb SFIOR=0x30;
sfrb OSCCAL=0x31;
sfrb TCNT0=0x32;
sfrb TCCR0=0x33;
sfrb MCUCSR=0x34;
sfrb MCUCR=0x35;
sfrb TWCR=0x36;
sfrb SPMCR=0x37;
sfrb TIFR=0x38;
sfrb TIMSK=0x39;
sfrb GIFR=0x3a;
sfrb GICR=0x3b;
sfrb OCR0=0X3c;
sfrb SPL=0x3d;
sfrb SPH=0x3e;
sfrb SREG=0x3f;
#pragma used-

// Interrupt vectors definitions


// Needed by the power management functions (sleep.h)
#asm
	#ifndef __SLEEP_DEFINED__
	#define __SLEEP_DEFINED__
	.EQU __se_bit=0x80
	.EQU __sm_mask=0x70
	.EQU __sm_powerdown=0x20
	.EQU __sm_powersave=0x30
	.EQU __sm_standby=0x60
	.EQU __sm_ext_standby=0x70
	.EQU __sm_adc_noise_red=0x10
	.SET power_ctrl_reg=mcucr
	#endif
#endasm


// CodeVisionAVR C Compiler
// (C) 1998-2000 Pavel Haiduc, HP InfoTech S.R.L.


#pragma used+
#pragma used+

void delay_us(unsigned int n);
void delay_ms(unsigned int n);

#pragma used-

/* CodeVisionAVR C Compiler
   Prototypes for standard library functions

   (C) 1998-2003 Pavel Haiduc, HP InfoTech S.R.L.
*/




#pragma used+
#pragma used+
#pragma used+

int atoi(char *str);
long int atol(char *str);
float atof(char *str);
void itoa(int n,char *str);
void ltoa(long int n,char *str);
void ftoa(float n,unsigned char decimals,char *str);
void ftoe(float n,unsigned char decimals,char *str);
void srand(int seed);
int rand(void);
void *malloc(unsigned int size);
void *calloc(unsigned int num, unsigned int size);
void *realloc(void *ptr, unsigned int size); 
void free(void *ptr);

#pragma used-
#pragma library stdlib.lib


  

unsigned char datR_buf[32];
flash unsigned char AC_TABLE[]={
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,      //第一行漢字位置
0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,      //第二行漢字位置
0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,      //第三行漢字位置
0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f      //第四行漢字位置
};
 
//串口發送一個字節
void SendByte(unsigned char Dbyte)
{
     unsigned char i;
     for(i=0;i<8;i++)
     {
           PORTA.6                = 0;
          Dbyte=Dbyte<<1;      //左移一位
          PORTA.5      =SREG&0x01;            //移出的位給SIDW
          PORTA.6                = 1;  
          PORTA.6                = 0;
     }
}

//串口接收一個字節
//僅在讀取數據的時候用到
//而讀出的數據是一次只能讀出4bit的
unsigned char ReceiveByte(void)
{
     unsigned char i,temp1,temp2; 
     temp1=temp2=0;     
    // DDRD.5=0;
     for(i=0;i<8;i++)
     {     
           temp1=temp1<<1;
           PORTA.6                = 0;
           PORTA.6                = 1;            
           PORTA.6                = 0;
           if(PINA.5      ) temp1++;
     }
     for(i=0;i<8;i++)
     {
           temp2=temp2<<1;
           PORTA.6                = 0;
           PORTA.6                = 1;
           PORTA.6                = 0;
           if(PINA.5      ) temp2++;
     }  
  //   DDRD.5=1;
     return ((0xf0&temp1)+(0x0f&temp2));
}

void CheckBusy( void )
{
     do   SendByte(0xfc);      //11111,RW(1),RS(0),0
     while(0x80&ReceiveByte());      //BF(.7)=1 Busy
}

void WriteCommand( unsigned char Cbyte )
{
     PORTA.4 = 1;
     CheckBusy();
     SendByte(0xf8);            //11111,RW(0),RS(0),0
     SendByte(0xf0&Cbyte);      //高四位
     SendByte(0xf0&Cbyte<<4);//低四位(先執行<<)     
     PORTA.4 = 0;
}

void WriteData( unsigned char Dbyte )
{
     PORTA.4 = 1;
     CheckBusy();
     SendByte(0xfa);            //11111,RW(0),RS(1),0
     SendByte(0xf0&Dbyte);      //高四位
     SendByte(0xf0&Dbyte<<4);//低四位(先執行<<)    
     PORTA.4 = 0;
}

unsigned char ReadData( void )
{
     CheckBusy();
     SendByte(0xfe);            //11111,RW(1),RS(1),0
     return ReceiveByte();
}
void LcmInit( void )
{    
     PORTA.7=0;  
     delay_us(10);
     PORTA.7=1;
     WriteCommand(0x30);      //8BitMCU,基本指令集合
     WriteCommand(0x03);      //AC歸0,不改變DDRAM內容
     WriteCommand(0x0C);      //顯示ON,游標OFF,游標位反白OFF
     WriteCommand(0x01);      //清屏,AC歸0
     WriteCommand(0x06);      //寫入時,游標右移動
}

//文本區清RAM函數
void LcmClearTXT( void )
{
     unsigned char i;
     WriteCommand(0x30);      //8BitMCU,基本指令集合
     WriteCommand(0x80);      //AC歸起始位
     for(i=0;i<64;i++)
        WriteData(0x20);
}

//圖形區和文本區顯示在兩個不同的RAM區
//圖形區清RAM函數
void LcmClearBMP( void )
{
     unsigned char i,j;
     WriteCommand(0x34);      //8Bit擴充指令集,即使是36H也要寫兩次
     WriteCommand(0x36);      //繪圖ON,基本指令集里面36H不能開繪圖
     for(i=0;i<32;i++)            //12864實際為256x32
     {
           WriteCommand(0x80|i);      //行位置
           WriteCommand(0x80);      //列位置
           for(j=0;j<32;j++)            //256/8=32 byte
                WriteData(0);
     }
}
/*****************************************   
函數名:PutStr()
功能:  實現任意字符輸入(即實現字母、數字和漢字任意結合的語句顯示)
輸入:row:0~3行;col:0~7列;*puts:要顯示的字符串
******************************************/
void PutStr(unsigned char row,unsigned char col,flash unsigned char *puts)
{    
        WriteCommand(0x30);      //8BitMCU,基本指令集合
        //   WriteCommand(AC_TABLE[8*row+col]);      //起始位置
        while(*puts != '\0')      //判斷字符串是否顯示完畢
        {     
                if(col>=8)            //判斷換行
                {            //若不判斷,則自動從第一行到第三行
                        col=0;
                        row++;
                }
                if(row>=4) break;      //一屏顯示完,回到屏左上角
                WriteCommand(AC_TABLE[8*row+col]);  
                
                if(*puts<0xa1) 
                {       
                        WriteData(*puts);
                        if(*(puts+1)>0xa1)         //緊跟單字節字符后面的是漢字   
                                WriteData(0xa0);      //空格
                        else
                        {       puts++;
                                if(*puts=='\0') 
                                {
                                        WriteData(0xa0);      //空格  
                                        break;
                                }
                                WriteData(*puts);
                        }
                                
                } 
                else
                {
                        WriteData(*puts);      //一個漢字要寫兩次
                        puts++;
                        WriteData(*puts);   
                }    
                puts++; 

                col++;
        }
}  
void PutStr1(unsigned char row,unsigned char col,unsigned char *puts)
{    
        WriteCommand(0x30);      //8BitMCU,基本指令集合
        //   WriteCommand(AC_TABLE[8*row+col]);      //起始位置
        while(*puts != '\0')      //判斷字符串是否顯示完畢
        {     
                if(col>=8)            //判斷換行
                {            //若不判斷,則自動從第一行到第三行
                        col=0;
                        row++;
                }
                if(row>=4) break;      //一屏顯示完,回到屏左上角
                WriteCommand(AC_TABLE[8*row+col]);  
                
                if(*puts<0xa1) 
                {       
                        WriteData(*puts);
                        if(*(puts+1)>0xa1)         //緊跟單字節字符后面的是漢字   
                                WriteData(0xa0);      //空格
                        else
                        {       puts++;
                                if(*puts=='\0') 
                                {
                                        WriteData(0xa0);      //空格  
                                        break;
                                }
                                WriteData(*puts);
                        }
                                
                } 
                else
                {
                        WriteData(*puts);      //一個漢字要寫兩次
                        puts++;
                        WriteData(*puts);   
                }    
                puts++; 

                col++;
        }
}   

/***************************************************************
函數名:disp1616(X,Y,*s)
功能:帶字庫LCD12864的自定義16*16字體顯示
輸入:Y:列地址設置0~15;X;行地址設置0和16;*S:字模地址指針; focus:反白顯示設置:1:反白;0:非反白
返回:無
*******************************************************************/
void disp1616(unsigned char X,unsigned char Y, flash unsigned char *s, unsigned char focus)
{
        unsigned char i,j;   
        WriteCommand(0x34);      //8Bit擴充指令集,即使是36H也要寫兩次
        WriteCommand(0x36);      //繪圖ON,基本指令集里面36H不能開繪圖
        for(j=0;j<16;j++)            
        {
                WriteCommand(0x80|X++);      //行位置
                WriteCommand(0x80|Y);      //列位置
                if(focus)
                        for(i=0;i<2;i++)
                                WriteData(~(*s++));
                else
                        for(i=0;i<2;i++)
                                WriteData(*s++); 
        }
        
} 

/***************************************************************
函數名:disp88(X,Y,*s)
功能:帶字庫LCD12864的自定義8*8字體顯示,但一次必須顯示兩個8*8的字模
輸入:Y:列地址設置0~15;X;行地址設置0和16;*S1,*S2:兩個字模指針(合并顯示);
返回:無
*******************************************************************/  
void disp88(unsigned char X, unsigned char Y,flash unsigned char *s1,flash unsigned char *s2)
{
        unsigned char i; 
        WriteCommand(0x34);      //8Bit擴充指令集,即使是36H也要寫兩次
        WriteCommand(0x36);      //繪圖ON,基本指令集里面36H不能開繪圖
        for(i=0;i<8;i++)            
        {
                WriteCommand(0x80|X++);      //行位置
                WriteCommand(0x80|Y);      //列位置
                WriteData(*s1++);
                WriteData(*s2++);
                         
        }
        
}

/***************************************************************
函數名:PutBMP()
功能:全圖顯示
輸入:*puts:字模
返回:無
*******************************************************************/
void PutBMP(flash unsigned char *puts)
{
     unsigned int x=0;
     unsigned char i,j;
     WriteCommand(0x34);      //8Bit擴充指令集,即使是36H也要寫兩次
     WriteCommand(0x36);      //繪圖ON,基本指令集里面36H不能開繪圖
     for(i=0;i<32;i++)            //12864實際為256x32
     {
           WriteCommand(0x80|i);      //行位置
           WriteCommand(0x80);      //列位置
           for(j=0;j<32;j++)      //256/8=32 byte
           {            //列位置每行自動增加
                 WriteData(puts[x]);
                 x++;
           }
     }
} 

/***************************************************************
函數名:dispint(Num)
功能:顯示整型數字
輸入:Num:0-99的整型數字
返回:無
*******************************************************************/
void dispint(unsigned char X,unsigned char Y,unsigned int Num)
{      
        unsigned char buf[8]; 
    //    if(Num<0||Num>99)
     //           return;
        itoa(Num,buf); 
        if(Num<10)
        {
                buf[1]=buf[0];
                buf[0]='0';
                buf[2]='\0'; 
        } 
        PutStr1(X,Y,buf);        
        
}                            

//維捷登測試用點陣顯示
void DisplayDots(unsigned char DotByte)
{
     unsigned char i,j;
     WriteCommand(0x34);      //8Bit擴充指令集,即使是36H也要寫兩次
     WriteCommand(0x36);      //繪圖ON,基本指令集里面36H不能開繪圖
     for(i=0;i<32;i++)            //12864實際為256x32
     {
           WriteCommand(0x80|i);      //行位置
           WriteCommand(0x80);      //列位置
           for(j=0;j<32;j++)      //256/8=32 byte
           {            //列位置每行自動增加
                 WriteData(DotByte);                  
           }
      //     DotByte=~DotByte;
     }
}

/***************************************************************
函數名

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99国产精品久久久久久久久久| 91精品欧美综合在线观看最新| 在线欧美日韩精品| 精品噜噜噜噜久久久久久久久试看| 国产丝袜美腿一区二区三区| 亚洲一区二区三区小说| 国产成人h网站| 91精品国产综合久久精品图片| 久久精品夜色噜噜亚洲a∨| 亚洲成人福利片| 91香蕉视频mp4| 国产亚洲一区二区三区| 日韩高清电影一区| 在线观看国产精品网站| 国产精品高潮呻吟| 国产专区欧美精品| 日韩三级高清在线| 日韩高清在线观看| 欧美人动与zoxxxx乱| 亚洲欧美二区三区| 99国产精品一区| 中文字幕精品一区二区三区精品 | 欧美成人性战久久| 亚洲18色成人| 日本韩国欧美一区二区三区| 国产精品传媒入口麻豆| 国产成人亚洲综合a∨猫咪| 日韩三级伦理片妻子的秘密按摩| 一级精品视频在线观看宜春院| eeuss影院一区二区三区| 中文字幕av一区二区三区高| 国产精品一二三四五| 精品精品国产高清一毛片一天堂| 日韩不卡手机在线v区| 欧美日韩三级视频| 日韩主播视频在线| 欧美精品一二三四| 日韩成人一区二区三区在线观看| 欧美精品一二三区| 日韩电影在线看| 777午夜精品免费视频| 视频在线观看国产精品| 91麻豆精品国产无毒不卡在线观看 | 91视视频在线观看入口直接观看www | 偷拍与自拍一区| 欧美日韩你懂得| 午夜精品在线看| 日韩午夜在线观看视频| 蜜桃在线一区二区三区| 3d成人h动漫网站入口| 蜜臂av日日欢夜夜爽一区| 日韩视频一区二区在线观看| 韩国成人在线视频| 国产欧美日韩综合精品一区二区| 豆国产96在线|亚洲| ●精品国产综合乱码久久久久| 色国产精品一区在线观看| 亚洲一区二区三区中文字幕在线| 欧美日韩国产小视频| 久久99蜜桃精品| 国产精品久久综合| 欧美日韩视频在线一区二区| 免费观看91视频大全| 久久一区二区三区四区| 波多野结衣中文字幕一区二区三区| 亚洲少妇中出一区| 在线播放亚洲一区| 国产成人av影院| 亚洲国产精品久久一线不卡| 日韩精品最新网址| av在线不卡免费看| 日韩国产一区二| 欧美韩国一区二区| 欧美日韩国产一二三| 福利一区二区在线观看| 亚洲成人av一区二区| 国产亚洲欧美中文| 欧美亚洲禁片免费| 国产精品18久久久| 亚洲图片欧美视频| 国产欧美日韩精品在线| 欧美日韩精品三区| 99综合电影在线视频| 久久99精品一区二区三区| 亚洲欧美日韩久久| 久久久午夜精品| 欧美二区在线观看| 91色porny在线视频| 激情久久久久久久久久久久久久久久| 亚洲人吸女人奶水| 久久伊人中文字幕| 欧美一区二区视频在线观看| 91伊人久久大香线蕉| 国产在线播放一区| 日本伊人精品一区二区三区观看方式| 中文字幕在线观看不卡| 久久看人人爽人人| 777xxx欧美| 欧美性大战久久久久久久 | 亚洲成av人影院| 国产精品国产自产拍高清av| 精品日韩欧美一区二区| 51精品国自产在线| 欧美日韩一区在线| 在线视频综合导航| 91啪在线观看| 99免费精品视频| 国产99久久久国产精品免费看| 久久99蜜桃精品| 轻轻草成人在线| 日韩成人免费在线| 日韩av午夜在线观看| 爽爽淫人综合网网站 | 久久精品亚洲乱码伦伦中文| 日韩精品一区国产麻豆| 欧美一区二区久久| 日韩欧美国产精品| 日韩欧美一区二区久久婷婷| 欧美一区二区视频在线观看2020| 欧美日韩免费电影| 欧美一区二区三区四区在线观看 | 欧美最猛性xxxxx直播| 色欲综合视频天天天| 色综合亚洲欧洲| 欧美亚洲日本一区| 91麻豆精品国产综合久久久久久| 欧美日韩激情在线| 日韩亚洲欧美在线| 精品国产污网站| 国产亚洲一区二区三区四区 | 国产日韩欧美精品电影三级在线| 精品乱码亚洲一区二区不卡| 久久综合狠狠综合| 中文字幕高清不卡| 亚洲欧美日韩一区二区三区在线观看| 亚洲免费观看高清完整版在线| 亚洲视频一区在线观看| 亚洲精品中文字幕乱码三区| 夜色激情一区二区| 美女mm1313爽爽久久久蜜臀| 精品一区二区三区久久| 成人丝袜视频网| 欧美三电影在线| 精品国产伦一区二区三区观看体验| 久久―日本道色综合久久| 国产精品久久久久久久久动漫 | 精品污污网站免费看| 久久久久久久综合日本| 国产精品国产a级| 亚洲小少妇裸体bbw| 极品销魂美女一区二区三区| 国产99久久久国产精品潘金网站| 一本色道久久综合精品竹菊| 欧美一级理论片| 国产精品你懂的在线| 亚洲成av人在线观看| 国产一区二区美女| 在线视频观看一区| 国产亚洲一区二区三区| 亚洲国产精品久久艾草纯爱| 国产一区免费电影| 欧美日韩另类国产亚洲欧美一级| 久久综合资源网| 亚洲一区二区三区不卡国产欧美| 精品在线播放午夜| 在线日韩一区二区| 国产清纯白嫩初高生在线观看91 | 亚洲精品免费在线| 狠狠久久亚洲欧美| 欧美色倩网站大全免费| 国产日韩欧美精品在线| 水蜜桃久久夜色精品一区的特点| 成人免费电影视频| 日韩女优制服丝袜电影| 亚洲专区一二三| 国产大陆亚洲精品国产| 91精品国产综合久久精品图片| 日韩理论电影院| 国产高清精品久久久久| 制服丝袜在线91| 亚洲综合一区二区三区| 懂色av噜噜一区二区三区av| 日韩欧美黄色影院| 亚洲免费av在线| 懂色中文一区二区在线播放| 欧美一区日韩一区| 亚洲国产日韩一区二区| 91美女蜜桃在线| 国产免费观看久久| 激情综合五月天| 日韩欧美一区中文| 午夜伊人狠狠久久| 欧美图片一区二区三区| 亚洲美女偷拍久久| 不卡在线视频中文字幕| 中文字幕精品一区二区三区精品 | 午夜精品在线看| 欧美日韩一区三区四区| 亚洲丶国产丶欧美一区二区三区| 91亚洲精品一区二区乱码|