Advertisement
Guest User

Untitled

a guest
Jun 18th, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.67 KB | None | 0 0
  1. #include <REG517A.H>
  2. #define VALOR_TH1 254
  3. /*
  4. //converter para o 517A
  5. #define SBUF S0BUF
  6. #define TI TI0
  7. #define RI RI0
  8. #define SM2 SM20
  9. #define REN REN0
  10. #define EA EAL
  11. #define ES ES0
  12. //converter para o 517A
  13. */
  14.  
  15. bit TxIdle = 1;
  16. unsigned char pwm_width;
  17. unsigned char param = 5;
  18. bit pwm_flag = 0;
  19.  
  20. void pwm_setup(){                                           //Use Timer0 as pwm timer
  21.     EAL = 0;
  22.     TR0 = 0;
  23.     pwm_width = 20 + 26*param;
  24.     EAL = 1;
  25.     ET0 = 1;
  26.     TR0 = 1;
  27. }
  28.      
  29. void serial_init(){                                     //Serial 0 Using Timer1 as baud rate generator
  30.     TR1 = 0;
  31.     EAL = 0;
  32.    
  33.     BD = 1;//ADCON0 = (ADCON0) | 0x80;          //Enable BD to use variable baud rate
  34.     S0CON = 0x50;                                                                       //SMOD = 0;
  35.     TMOD |= 0x20;                                                   //Baud Rate = 38,4k
  36.     TR1 = 1;
  37.     PCON |= 0x80;
  38.     /*S0RELH = 0x02;
  39.     S0RELL = 0xC7;
  40.     S1RELH = 0x02;
  41.     S1RELL = 0xC7;*/
  42.     ES0 = 1;                                                        //Enable Serial 0 Interrupt
  43.     REN0 = 1;                                                       //Enable Serial 0 Reception
  44.  
  45.  
  46.     EAL = 1;                                                        //Enable All Interrupts
  47. }
  48.  
  49. void timer0_init(){
  50.      TMOD = TMOD | 0x02;                                //Set Timer0 Mode 2
  51. }
  52.  
  53. void serial_isr (void) interrupt 4 using 2{
  54.     if (RI0){
  55.         RI0 = 0;
  56.         param = (S0BUF +1)%10;
  57.         pwm_setup();
  58.     }
  59.     if (TI0){
  60.         TI0 = 0;
  61.     }
  62. }
  63.      
  64. void timer0() interrupt 1{
  65.     if (!pwm_flag){                                 /* Start of High level */
  66.         pwm_flag = 1;                                       /* Set flag */
  67.         P4 = 0xFF;                                      // P4 = 1;      /* Set PWM o/p pin */
  68.         TH0 = pwm_width;                                    /* Load timer */
  69.         TF0 = 0;                                                /* Clear interrupt flag */
  70.     }
  71.     else{                                                       /* Start of Low level */
  72.         pwm_flag = 0;                                       /* Clear flag */
  73.         P4 = 0x00;                                          /* Clear P4 o/p pin */
  74.         TH0 = 255 - pwm_width;                          /* Load timer */
  75.         TF0 = 0;                                                /* Clear Interrupt flag */
  76.     }
  77. }
  78.  
  79.  
  80.  
  81. int main(){
  82.    
  83.     //serial_init();
  84.     timer0_init();
  85.     pwm_setup();    
  86.     while(1){
  87.         //param = (param + 1)%10;
  88.         //pwm_setup();
  89.         //TH0=pwm_width;
  90.     }
  91.     return 0;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement