请教各位高人,为什么我在t0的中断里设置的判断中断计数...

2020-01-22 12:02发布

请教各位高人,为什么我在t0的中断里设置的判断中断计数的led状态没有改变呢   按照我的设想,在中断不同的次数里,led会输出不同的状态  不知问题在哪里 请各位指点一二

// 18.432MHz
#include "reg52.h"
#define PWM8BIT     485            
#define HIGHDUTY 80                  
#define LOWDUTY  (PWM8BIT-HIGHDUTY)  
sfr AUXR      = 0x8e;               
sfr INT_CLKO  = 0x8f;               
sbit T0CLKO   = P1^0;               
sbit led   = P1^1;
bit flag;
unsigned int cout;
void tm0() interrupt 1
{
    T0CLKO = !T0CLKO;
          flag = !flag;                    
    if (flag)
    {
        TL0 = (65536-HIGHDUTY);     
        TH0 = (65536-HIGHDUTY) >> 8;
    }
    else
    {
        TL0 = (65536-LOWDUTY);      
        TH0 = (65536-LOWDUTY) >> 8;
    }
         cout=+1;       
                 switch(cout)
                   {
        case 20:
                                        led=0;
                                  break;   
        case 40:
                                        led=1;
                                  break;      
        case 60:
                                        led=0;
                                  break;
        case 80:
                                        led=1;
                                  break;
        case 100:
                                        led=0;
                                  break;
        case 120:
                                        led=1;
                                  break;
        case 140:
                                        led=0;
                                  break;
        case 160:
                                        led=1;
                                  break;
        case 180:
                                        led=0;
                                  break;
        case 200:
                                        led=1;
                                  break;
                          }
                if (cout==200)
                       {
                                                 cout=1;
           }
}

void main()
{
    AUXR = 0x80;                     
    INT_CLKO = 0x01;               
    TMOD &= 0xf0;                    
    TL0 = (65536-LOWDUTY);           
    TH0 = (65536-LOWDUTY) >> 8;
    T0CLKO = 1;                     
    flag = 0;                       
    TR0 = 1;                        
    ET0 = 1;                       
    EA = 1;
          cout=1;
          led=0;
    while (1);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
Hassen_JYA
1楼-- · 2020-01-23 05:56
3楼的应该是正解,cout没有变化一直是1。
767697
2楼-- · 2020-01-23 09:58
感谢楼上各位 问题解决了 多年前玩过avr  现在因为个小项目 临时操家伙  好多问题就来了 好在后边苦熬两天 终于搞定程序

一周热门 更多>