?? 1357.c
字號:
#include "io8535.h"
#include "math.h"
#pragma interrupt_handler timer:5
int word,data,data_temp,out_temp,adc[9],ip,jp,reg;
float temp;
static int s[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x6F};
void paixu()
{
for(ip=0;ip<8;ip++)
{
for(jp=0;jp<8-ip;jp++)
{
if(adc[jp]<adc[jp+1])
{
adc[8]=adc[jp];
adc[jp]=adc[jp+1];
adc[jp+1]=adc[8];
}
}
}
adc[8]=adc[2]+adc[3]+adc[4]+adc[5];
}
void main()
{
SP=0x025F;
DDRA=0x00;
DDRB=0xFF;
DDRD=0xFF;
PORTB=0x00;
TIMSK=0x40; //允許T/C2溢出中斷
TCNT2=0x00; //T/C2計數初值
TCCR2=0x05; //T/C2采用128分頻
ADCSR=0xE5; //adc采用32分頻
ADMUX=6; //采集第6路的數據
word=0xfe; //置位線初值
SREG=0x80; //允許中斷
for(;;)
{
for(ip=0;ip<8;ip++)
{
for(reg=0;reg<3000;reg++)
{;}
adc[ip]=ADC;
}
paixu(); //調用排序函數,對數據進行處理
temp=adc[8]/4;
temp=5*temp; //標度變換(y=5*x-1000)
temp=temp-1000;
data_temp=temp;
data=data_temp%10;data_temp=data_temp/10;data=s[data];
*(volatile unsigned char *)0x100=data;
data=data_temp%10;data_temp=data_temp/10;data=s[data];
*(volatile unsigned char *)0x101=data;
data=data_temp%10;data_temp=data_temp/10;data=s[data];
*(volatile unsigned char *)0x102=data;
data=data_temp%10;data=s[data];
*(volatile unsigned char *)0x103=data;
}//二轉十,求得個十百千位,并查出相應位的七段碼依次存于SRAM的$100~$103
}
void timer()
{ // T/C2中斷執行程序,完成四路數碼動態掃描顯示
int sreg_temp;
sreg_temp=SREG;
switch(word)
{
case 0xfe:
PORTD=0xfe;
out_temp=*(volatile unsigned char *)0x100;
PORTB=out_temp;
word=0xfd;break;
case 0xfd:
PORTD=0xfd;
out_temp=*(volatile unsigned char *)0x101;
PORTB=out_temp;
word=0xfb;break;
case 0xfb:
PORTD=0xfb;
out_temp=*(volatile unsigned char *)0x102;
PORTB=out_temp;
word=0xf7;break;
case 0xf7:
PORTD=0xf7;
out_temp=*(volatile unsigned char *)0x103;
PORTB=out_temp;
word=0xfe;break;
}
SREG=sreg_temp;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -