📄 mainok._c
字号:
/***************************************/
/* 使用内部震荡,设置4mhz */
/****************************************/
//2007.12---xieming
// 1、使用ICCAVR的终端调试窗口(Terminal),进行通信调试。
// 2、对ICCAVR的终端调试窗口进行设置,设置串口为com1或com2,
// 通信波特率为19200(Tools->Environment Options...)。
// 3、将PC屏幕光标定位于调试窗口中
#include "iom8v.h"
#include "macros.h"
#define osccal 0x7d
//内部RC校正常数
#define Vref 500//参考电压值
unsigned int adc_rel;//AD转换结果
unsigned char adc_mux;//AD通道
#define set_bit(x,y) (x|=(1<<y))
#define clr_bit(x,y) (x&=~(1<<y))
//PORT B
#define OUT1 5
#define OUT2 4
unsigned int disnm,smode;
unsigned char dis[4];
unsigned char num[12]={
0x3f,//------------------0
0x06,//------------------1
0x5b,//------------------2
0x4f,//------------------3
0x66,//------------------4
0x6d,//------------------5
0x7d,//------------------6
0x27,//------------------7
0x7f,//------------------8
0x6f,//------------------9
0xff,//------------------8.
0x00//-------------------none
};
unsigned char temp[4]={30,35,40,45};
unsigned char sd,su,se,sm;
void delay(int dt) //delay=(0.95dt+1.76)us
{while(dt)
{dt--;
asm("nop");
asm("nop");
asm("nop");
}
}
void display(void)
{unsigned char i;
for(i=0;i<4;i++)
{ clr_bit(PORTD,i);
PORTB=num[dis[i]];
delay(10);
set_bit(PORTD,i);
}
}
unsigned char keyscan(void)
{ unsigned char keyst,tp;
keyst=PINC;
delay(10);
tp=PINC;
if(tp!=keyst) return 0;
keyst=keyst&0x0f;
if(keyst==0x0f)
{sd=0;su=0;se=0;sm=0;
return 0;//no button
}
else
{if(sd||se||su||sm) return 0;
if((keyst&1)==0) {sd=1;return 1;} //down
else if((keyst&2)==0) {su=1;return 2;}//up
else if((keyst&4)==0) {se=1;return 3;}//enter
else if((keyst&8)==0) {sm=1;return 4;}//mode
}
}
void main(void)
{
unsigned int j,keynm,i=0;
DDRB=0xff;/*PORTb is outPUT PORT*/
PORTB=0xfF;//
DDRD=0xff; //
PORTD=0x3f; //
DDRC=0x00;/* input */
PORTC=0x0f;/* pullup enable */
while(1)
{
//dis[0]=11;dis[1]=11;dis[2]=11;dis[3]=11;
keynm=keyscan();
if(keynm==4)//set mode
{smode=smode+1;
if(smode==5) smode=1;
dis[3]=4;
display();
}
else if(keynm==3)//enter
{smode=0;
//save set value
}
if(smode)
{i=smode-1;
switch(keynm)
{case 2:
temp[i]++;
if(temp[0]==temp[1])temp[0]=temp[1]-1;
if(temp[1]==temp[2])temp[1]=temp[2]-1;
if(temp[2]==temp[3])temp[2]=temp[3]-1;
if(temp[3]==99)temp[3]=98;
break;
case 1:
temp[i]--;
if(temp[0]==0)temp[0]=1;
if(temp[1]==temp[0])temp[1]=temp[0]+1;
if(temp[2]==temp[1])temp[2]=temp[1]+1;
if(temp[3]==temp[2])temp[3]=temp[2]+1;
break;
default:break;
}
dis[0]=smode;dis[1]=11;
dis[2]=temp[i]/10;
dis[3]=temp[i]%10;
display();
}
else
{
//disnm=ADC;
//disnm=ADC;
dis[0]=disnm/1000;
dis[1]=disnm/100;dis[1]=dis[1]%10;
dis[2]=disnm/10;dis[2]=dis[2]%10;
dis[3]=disnm%10;
display();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -