Две синусоиды из одного порта

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
EXtReMe_
Родился
Сообщения: 8
Зарегистрирован: Вт мар 12, 2013 14:51:10

Две синусоиды из одного порта

Сообщение EXtReMe_ »

Всем привет. Подскажите, как организовать вывод 2х синусоид разных частот из одного порта мк на 2 ЦАПа - на один допустим 1000гц на другой 15гц? Ноги LE цапов подключены к Р3.0 Р3.1. Не могу понять как реализовать програмно попеременное вклчение ЦАПов + к этому попеременный вывод синуса на них.

Модель
СпойлерИзображение



Программа на Ассемблере
Спойлер

Код: Выделить всё

Tic      EQU      -(260-10)
   call   Timer
   
MainLoop:
   call   SIN
   jmp      MainLoop

Timer:
   mov      TMOD,#00000001b
   ret

Delay:
   mov      TH0,#high(Tic)   
   mov      TL0,#low(Tic)
   setb   TR0         
   jnb      TF0,$      
   clr      TF0         
   clr      TR0   
   ret
   
SIN:
   mov        DPTR,#tabl   
   mov        R7,#1      
   mov        R6,#255
K:   
   CLR     A         
    MOVC        A,@A+DPTR
       
    MOV     P0,A      
    CLR     A
    INC     DPTR
    MOVC    A,@A+DPTR
   
   MOV     P2,A
   SETB    P3.0
   NOP
   NOP
   CLR     P3.0
    MOV     A,DPL
    ADD     A,R7           
    MOV     DPL,A
    JNC     NC         
    INC     DPH       
NC:
    DJNZ        R6,K       
    JMP     SIN
    RET
   
tabl:
   dw 2047,2097,2147,2198,2248,2297,2347,2397,2446,2495,2544,2593
   dw 2641,2689,2736,2783,2830,2876,2922,2967,3011,3055,3099,3142
   dw 3184,3225,3266,3306,3345,3383,3421,3458,3494,3529,3563,3596
   dw 3629,3660,3691,3720,3748,3776,3802,3828,3852,3875,3897,3918
   dw 3938,3956,3974,3990,4005,4019,4032,4044,4054,4064,4072,4078
   dw 4084,4088,4091,4093,4094,4093,4092,4089,4084,4079,4072,4064
   dw 4055,4045,4033,4020,4006,3991,3975,3958,3939,3919,3898,3876
   dw 3853,3829,3804,3778,3750,3722,3693,3662,3631,3599,3565,3531
   dw 3496,3460,3424,3386,3348,3308,3268,3228,3186,3144,3102,3058
   dw 3014,2970,2925,2879,2833,2786,2739,2692,2644,2596,2547,2498
   dw 2449,2400,2350,2301,2251,2201,2151,2100,2050,2000,1950,1900
   dw 1850,1800,1750,1700,1651,1602,1553,1504,1456,1408,1361,1314
   dw 1267,1221,1175,1130,1085,1041,998,955,913,872,831,791
   dw 751,713,675,638,602,567,533,500,467,436,405,376
   dw 347,320,293,268,244,221,198,177,158,139,121,105
   dw 89,75,62,51,40,31,23,16,10,6,3,1
   dw 0,1,2,5,9,15,21,29,38,49,60,73
   dw 87,102,118,135,154,173,194,216,239,263,288,315
   dw 342,370,400,430,461,493,526,561,596,631,668,706
   dw 744,783,823,864,905,947,990,1033,1077,1121,1166,1212
   dw 1258,1305,1352,1399,1447,1495,1544,1592,1641,1691,1740,1790
   dw 1840,1890,1940,1990
END
Последний раз редактировалось Аlex Вс апр 27, 2014 11:28:21, всего редактировалось 1 раз.
Причина: ---
Аватара пользователя
Chat_vert
Потрогал лапой паяльник
Сообщения: 304
Зарегистрирован: Ср фев 20, 2013 00:46:02
Откуда: РФ

Re: Две синусоиды из одного порта

Сообщение Chat_vert »

Всем привет.
Ну привет.

А нафик тебе два ЦАП ?
Перемножь два числа перед выводом в порт командой MUL и всё.
Ваше мнение очень важно для нас. Оставьте своё сообщение в нашей теме.
EXtReMe_
Родился
Сообщения: 8
Зарегистрирован: Вт мар 12, 2013 14:51:10

Re: Две синусоиды из одного порта

Сообщение EXtReMe_ »

Chat_vert писал(а):А нафик тебе два ЦАП ?

Амплитудная модуляция.
EXtReMe_
Родился
Сообщения: 8
Зарегистрирован: Вт мар 12, 2013 14:51:10

Re: Две синусоиды из одного порта

Сообщение EXtReMe_ »

Подсказывали такой вариант

CLR P3.0
RRC A
MOV P0,A
....
....
....
RRC A
MOV P2,A
SETB P3.1
CLR P3.1

Но я не понял подсказки)))
Аватара пользователя
Chat_vert
Потрогал лапой паяльник
Сообщения: 304
Зарегистрирован: Ср фев 20, 2013 00:46:02
Откуда: РФ

Re: Две синусоиды из одного порта

Сообщение Chat_vert »

EXtReMe писал(а):Амплитудная модуляция.
Напиши определение амплитудной модуляции из учебника прям тут.
Сразу ж понятно что
нафик два ЦАП
Если не понятно то незачёт и нафик из ВУЗ нам так преп. всегда говорит.
Ваше мнение очень важно для нас. Оставьте своё сообщение в нашей теме.
EXtReMe_
Родился
Сообщения: 8
Зарегистрирован: Вт мар 12, 2013 14:51:10

Re: Две синусоиды из одного порта

Сообщение EXtReMe_ »

Как програмно реализовать??? EQU -4 соответствует 1000гц -260 15гц. Таблица синусов одна. Я совершенно не понимаю алгоритм(
Аватара пользователя
Chat_vert
Потрогал лапой паяльник
Сообщения: 304
Зарегистрирован: Ср фев 20, 2013 00:46:02
Откуда: РФ

Re: Две синусоиды из одного порта

Сообщение Chat_vert »

Привет.

Картинку под спойлер убери пожалуйста, а то гориз.скрол напрягает блин.

А чё определение АМ не написал ?

Синусоиду на сколько промежутков поквантовал ?

Там таймеров два один настрой на N*15 Гц второй на N*1000Гц по прерыванию с первого клади в R2 синус по прерыванию со второго клади в R3
потом mov B,R2 ; mov A,R3 ; mul ; mov P2,A ;

А вобще спроси кто лучше меня знает а то я не очень в этих мк
Но писал я сам никого не просил сделать за меня чё то даже понял но у меня другое задание было
Ваше мнение очень важно для нас. Оставьте своё сообщение в нашей теме.
misyachniy
Прорезались зубы
Сообщения: 219
Зарегистрирован: Вт июл 02, 2013 09:17:49

Re: Две синусоиды из одного порта

Сообщение misyachniy »

Обычно применяют счетчики с разным числом для суммирования.

Например 15 герц выводите добавляя по 1 к счетчику для поиска текущего значения в таблице.
А для 1000 добавляете 67.

Затем отбрасываете старшие биты чтобы остаток "влез" в таблицу и выбираете значение.

Естественно частота вывода должна быть хотя-бы в 16 раз больше чем 100 герц.
Ответить

Вернуться в «Разные вопросы по МК»