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

* 40568: 大家帮我看看这个程序

   rolinyang 
rolinyang发表的帖子 

 大家帮我看看这个程序

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

# 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()的是怎样顺序的....



发表时间:2003年8月21日20:17:36

  
回复该帖

本主题共有 3 帖,分页:>>>>>该主题的所有内容[3]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  40596.[详细]程序从main()函数开始执行。timer0() interrupt 1&nb..
摘要:程序从main()函数开始执行。timer0() interrupt 1 using 1是定时/计数器0的中断服务 程序,只有timer0产生中断时才运行,如果系统采用12MHz晶振,TH0......(201字)
- [guest][861次] 2003年8月22日

  40618.[详细]看完你的程序,我觉得你的定时中断时间真的很短,我相信你还可以设置定时分频,加宽时间间隔...
摘要:看完你的程序,我觉得你的定时中断时间真的很短,我相信你还可以设置定时分频,加宽时间间隔.......(84字)
- [chenzuan][940次] 2003年8月22日

[上一篇帖子]:看一下51的书,就串口通讯看一下,一点不看,大家也是白说。
[下一篇帖子]:带10k上拉电阻后,它就是普通I/O口吗?与其它有和分别??