Программирование системного таймера

Автор работы: Пользователь скрыл имя, 12 Февраля 2011 в 19:27, курсовая работа

Описание работы

Изучить устройство и принцип работы системного таймера, а так же для демонстрации использовать самостоятельно разработанную программу.

Файлы: 1 файл

курсовой проект.doc

— 145.50 Кб (Скачать файл)

        //setvect(8,NewInt08);

        //atexit(DeactivateTimer);

        return 1;

      } 

     void SetTimerFreq(unsigned freq)

      { SetTimer((unsigned)(1193181L/freq)); } 

     void DeactivateTimer(void)

      { SetTimer(0); } 

      void printtime()

      {

           struct  time t;

           gettime(&t);

           printf("The current time is: %2d:%02d:%02d.%02d\n",

           t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund);

      }

      void rnd_set(int bound) {

           outportb(0x43, 0xb6);

           outportb(0x42, bound & 0x00ff);

           outportb(0x42, (bound &0xff00) >> 8);

           outportb(0x61, inp(0x61) | 1);

                 }

     int rnd_get(void) {

           int i;

           outportb(0x43, 0x86);

           i = inportb(0x42);

           i = (inportb(0x42) << 8) + i;

           return(i);

     } 

     void tm_sound(int freq, int time)

     {

           int cnt, i;

           outp(0x43, 0xb6);

           cnt = 1193180L / freq;

           outp(0x42, cnt & 0x00ff);

           outp(0x42, (cnt &0xff00) >> 8);

           outp(0x61, inp(0x61) | 3);

           delay(time);

           outp(0x61, inp(0x61) & 0xfc);

     } 

      void main()

      {

           int i;

           for(i=0 ;mary[i] != 0 ;i++)

                 tm_sound(mary[i], del[i]);

           //printtime();

           SetTimerFreq(182);

           puts("Press any key for continue");

           getch();

           for(i=0 ;mary[i] != 0 ;i++)

                 tm_sound(mary[i], del[i]);

           //delay(50000);

           //printtime();

           SetTimer(0);

           puts("Press any key for continue");

           getch(); 

           int j;

           printf("\nRandom number generator"

                        "\nPress any key"

                        "\n");

           for(int k=0;k<10;k++) {

                 rnd_set(80);

                 getch();

                 j = rnd_get();

                 for(i=0; i < j; i++) putchar(219);

                 printf("\n");

           }

           puts("Thank you\n");

           getch();

      }

     Заключение:

     Таймеры важны для работы любой многозадачной системы по ряду причин. Среди многих других задач, они следят за временем суток и не позволяют одному процессу надолго занять ЦП.

 

     Литература:

    1. «Современные операционные системы», Э. Таненбаум, Издательство «Питер», 2010 г.
    2. «Операционные системы», В.Столингс, 2002 г.
    3. http://dklab.ru/
    4. http://www.lib.csu.ru/

Информация о работе Программирование системного таймера