#include <3048.h>

unsigned char cnt1;

void pwm1(void){
  if (cnt1==0)P1.DR.BYTE=0x01;
  if (cnt1==1)P1.DR.BYTE=0x02;
  if (cnt1==2)P1.DR.BYTE=0x04;
  if (cnt1==3)P1.DR.BYTE=0x08;
  if (cnt1==4)P1.DR.BYTE=0x10;
  if (cnt1==5)P1.DR.BYTE=0x20;
  if (cnt1==6)P1.DR.BYTE=0x40;
  if (cnt1==7)P1.DR.BYTE=0x80;
}

void pwm2(void){
  if (cnt1==0)P1.DR.BYTE=0x01;
  else if (cnt1==1)P1.DR.BYTE=0x02;
  else if (cnt1==2)P1.DR.BYTE=0x04;
  else if (cnt1==3)P1.DR.BYTE=0x08;
  else if (cnt1==4)P1.DR.BYTE=0x10;
  else if (cnt1==5)P1.DR.BYTE=0x20;
  else if (cnt1==6)P1.DR.BYTE=0x40;
  else if (cnt1==7)P1.DR.BYTE=0x80;
}

void pwm3(void){
  switch(cnt1){
    case 0: P1.DR.BYTE=0x01; break;
    case 1: P1.DR.BYTE=0x02; break;
    case 2: P1.DR.BYTE=0x04; break;
    case 3: P1.DR.BYTE=0x08; break;
    case 4: P1.DR.BYTE=0x10; break;
    case 5: P1.DR.BYTE=0x20; break;
    case 6: P1.DR.BYTE=0x40; break;
    case 7: P1.DR.BYTE=0x80; break;
  }
}

void pwm4(void){
  static unsigned char byte[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  P1.DR.BYTE = byte[cnt1];
}

void pwm5(void){
  P1.DR.BYTE = 1 << cnt1;
}

int main(void){

  P4.DDR = 0xFF;
  P1.DDR = 0xFF;
  P4.DR.BIT.B0 = 1;
  int i;
//  cnt1 = 0;
  cnt1 = 7;
  
  for(;;){
    for(i=1;i<100;i++){
//      pwm1();
//      pwm2();
//      pwm3();
//      pwm4();
      pwm5();
    }
    P4.DR.BIT.B0 = !P4.DR.BIT.B0;
  
  }



}
