导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→大家帮我看看这个程序[rolinyang]

 *第15688篇: 大家帮我看看这个程序

  
楼 主:rolinyang 2003年8月21日20:17
 大家帮我看看这个程序

*****************************************

# include   <reg52.h>  
# define uint unsigned int
# define uchar unsigned char

uchar bdata flag;
sbit flag1 = flag^1;
sbit flag2 = flag^2;
sbit P1_1 = P1^1;
uchar data time,dtime,btime;
uint fetch_rate(void);

main(){
char bdata jflag;
uint data state,astate,bstate,rate;
do{
P1 = 0xff;
flag = P1;
TXD = 0;
jflag = flag>  >  6;
jflag =jflag&0x03;
switch (jflag){
case 0: 
        time =2;dtime = 20; break;
case 1:
        time =4;dtime = 40; break;
case 2: 
        time =6;dtime = 60; break;
case 3: 
       time = 8; dtime = 80; break;
}
btime =dtime;
jflag = flag>  >  3;jflag =jflag&0x07;
switch (jflag){
case 0:
      state = 50; break;
case 1:
      state =100; break;
case 2:
     state = 150; break;
case 3:
     state = 200; break;
case 4:
     state = 250; break;
case 5:
     state = 300; break;
case 6: 
     state = 350; break;
case 7:
     state =400; break;
  }
flag1 = 0;
TMOD = 0x51;
TH1 = 0;
TL0 =0;
TH0 = 0x3c;
TL0 = 0xb0;
TR0 =1;
TR1 = 1;
ET0 = 1;
EA = 1;
rate = fetch_rate();
if (!flag2){
astate = state+2*state/10;
if (rate   <= state){
TXD =1;
do {
rate = fetch_rate();
} while (rate   <=astate);
TXD = 0;
}
}
else{
bstate =state-2*state/10;
if (rate>  =state){
TXD = 1;
do{
rate = fetch_rate();
} while (rate>  =bstate);
TXD = 0;
}
}
} while (1);
}

unsigned int fetch_rate()
{
uint count;
do {} while (!flag1);
flag1 = 0;
count = TH1*256+TL1;
TH1 = 0;
TL1 = 0;
dtime = btime;
return (count/time);
}

timer0() interrupt 1 using 1
{
TH0 = 0x3c;
TL0 = 0xB0;
dtime = dtime -1;
if (dtime ==0) {flag1 =1;}


*****************************************
各位,这个程序使用P1口输入8位微动开关值,采用P3.1为高时报警。我不知道后面的中断
timer0() interrupt 1 using 1与Main()的是怎样顺序的....

  
2楼:guest 2003年8月22日10:22
 程序从main()函数开始执行。time
程序从main()函数开始执行。timer0() interrupt 1 using 1是定时/计数器0的中断服务
程序,只有timer0产生中断时才运行,如果系统采用12mhz晶振,th0 = 0x3c;
tl0 = 0xb0;使得timer0每50ms产生一次中断。

  
3楼:chenzuan 2003年8月22日15:01
 看完你的程序,我觉得你的定时中断时间真的
看完你的程序,我觉得你的定时中断时间真的很短,我相信你还可以设置定时分频,加宽时间间隔.

>>>>>>对该主题发表你的看法

本主题贴数3,分页: [第1页]


[上一篇主题]:请问有用过AD7537 的吗?

[下一篇主题]:AT24c04