Исходник на С выложен ниже, а исходник на асме здесь , только несколько покривившийся.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено L.A. 02 июля 2003 г. 10:47
В ответ на: Ответ: Конечно было бы интересно взглянуть на исходной текст. Но как я понял из ответов отправлено Bill 02 июля 2003 г. 10:36


;*************************************************************************;
; 11zv628.ASM ;
;╔═══════════════════════════════════════════════════════════════════════╗;
;║ Тестовая программа для проверки PWM модуля ║;
;║ Выводит синус частотой около 30 Гц на выход PWM ║;
;║ Кварц на частоту 10 МГц ║;
;╚═══════════════════════════════════════════════════════════════════════╝;
;*************************************************************************;
list p=16f628
ERRORLEVEL 0,-302 ; Ignore Message[302]
#include ; Processor specific variable definitions
__CONFIG _CP_OFF & _WDT_ON & _BODEN_OFF & _HS_OSC & _MCLRE_OFF & _PWRTE_ON & _LVP_OFF
;******SFR************;***************************************************;
INDF EQU 00H ; СХЕМА ВКЛЮЧЕНИЯ ;
TMR0 EQU 01H ; ;
PCL EQU 02H ; ;
STATUS EQU 03H ; ┌────__────┐ ;
FSR EQU 04H ; 1│ │18 ;
PORTA EQU 05H ; ──┤PA2 PA1├────── ;
PORTB EQU 06H ; 2│ │17 ;
PCLATH EQU 0AH ; ──────┤PA3 PA0├────── ;
INTCON EQU 0BH ; 3│ │16 КВАРЦ ;
PIR1 EQU 0CH ; ──────┤PA4 OSC1├───────┼█┼┐10.0 MHz ;
TMR1L EQU 0EH ; 4│ │15 │ ;
TMR1H EQU 0FH ; ───┤PA5 OSC2├──────────┘ ;
T1CON EQU 10H ; 5│ │14 ;
TMR2 EQU 11H ; ├────┤GND VCC├───────O ;
T2CON EQU 12H ; 6│ │13 ;
CCPR1L EQU 15H ; ───┤PB0 PB7├─── ;
CCPR1H EQU 16H ; 7│ │12 ;
CCP1CON EQU 17H ; ───┤PB1 PB6├─── ;
RCSTA EQU 18H ; 8│ │11 ;
TXREG EQU 19H ; ───┤PB2 PB5├─── ;
RCREG EQU 1AH ; 9│ │10 ;
CMCON EQU 1FH ; PWM_OUT ───┤PB3 PB4├─── ;
; ; └──────────┘ ;
OPTREG EQU 81H ; ;
TRISA EQU 85H ; ;
TRISB EQU 86H ; ;
PIE1 EQU 8CH ; ;
PCON EQU 8EH ; ;
PR2 EQU 92H ; ;
VRCON EQU 9FH ; ;
;Регистры ОЗУ ; ;
TEMP1 EQU 20H ; ;
TEMP2 EQU 21H ; ;
CNT1 EQU 22H ; ;
CNT2 EQU 23H ;===================================================;
H_BYTE EQU 24H ; ;
L_BYTE EQU 25H ; ;
SIGN EQU 26H ; ;
CNT3 EQU 27H ; ;
;--------------- ; ;
; биты STATUS ; ;
RP0 EQU 5 ;---------------------------------------------------;
;--------------------------;----------------------------------------------;
CONF_PORTB EQU B'00000000' ;
;-------------------------------------------------------------------------;
;*************************************************************************;
CONF_PORTA EQU B'11100000' ;
;-------------------------------------------------------------------------;
; Назначение битов PORTB ;---------------------------------------------;
;-------------------------------------------------------------------------;
; Биты CMCON ; ;
#define SCL CMCON,7 ; ;
#define SDA CMCON,6 ; ;
;-------------------------------------------------------------------------;
; Биты PORTA ; ;
;-------------------------------------------------------------------------;
#define OUT1 PORTA,1 ; ;
#define OUT2 PORTA,2 ; ;
#define STROBE PORTA,3 ; ;
#define PW_STAT PORTA,4 ; ;
;-------------------------------------------------------------------------;
#DEFINE BANK0 CLRF STATUS ;BCF STATUS,RP0
#DEFINE BANK1 BSF STATUS,RP0
;*************************************************************************;
ORG 00H
GOTO START
;/////////////////////////////////////////////////////
ORG 04H
;*************************************************************************;
; Таблица1 248 выборок для генерации синуса. Содержит 248 байт ;
;-------------------------------------------------------------------------;
TABL1 clrf PCLATH ;
; ;
MOVF CNT1,W ;
ADDWF PCL,F ;
;-------------------------------------------------------------------------;
DT 07eh,081h,084h,087h,08ah,08dh,090h,093h,096h,09ah,09dh,0a0h,0a3h ;
DT 0a6h,0a9h,0abh,0aeh,0b1h,0b4h,0b7h,0bah,0bch,0bfh,0c2h,0c4h,0c7h ;
DT 0c9h,0cch,0ceh,0d1h,0d3h,0d5h,0d7h,0dah,0dch,0deh,0e0h,0e1h,0e3h ;
DT 0e5h,0e7h,0e8h,0eah,0ebh,0edh,0eeh,0efh,0f1h,0f2h,0f3h,0f4h,0f5h ;
DT 0f6h,0f6h,0f7h,0f8h,0f8h,0f9h,0f9h,0f9h,0f9h,0f9h,0f9h,0f9h,0f9h ;
DT 0f9h,0f9h,0f9h,0f8h,0f8h,0f7h,0f6h,0f6h,0f5h,0f4h,0f3h,0f2h,0f1h ;
DT 0efh,0eeh,0edh,0ebh,0eah,0e8h,0e7h,0e5h,0e3h,0e1h,0e0h,0deh,0dch ;
DT 0dah,0d7h,0d5h,0d3h,0d1h,0ceh,0cch,0c9h,0c7h,0c4h,0c2h,0bfh,0bch ;
DT 0bah,0b7h,0b4h,0b1h,0aeh,0abh,0a9h,0a6h,0a3h,0a0h,09dh,09ah,096h ;
DT 093h,090h,08dh,08ah,087h,084h,081h,07eh,07ah,077h,074h,071h,06eh ;
DT 06bh,068h,065h,061h,05eh,05bh,058h,055h,052h,050h,04dh,04ah,047h ;
DT 044h,041h,03fh,03ch,039h,037h,034h,032h,02fh,02dh,02ah,028h,026h ;
DT 024h,021h,01fh,01dh,01bh,01ah,018h,016h,014h,013h,011h,010h,00eh ;
DT 00dh,00ch,00ah,009h,008h,007h,006h,005h,005h,004h,003h,003h,002h ;
DT 002h,002h,002h,002h,002h,002h,002h,002h,002h,002h,003h,003h,004h ;
DT 005h,005h,006h,007h,008h,009h,00ah,00ch,00dh,00eh,010h,011h,013h ;
DT 014h,016h,018h,01ah,01bh,01dh,01fh,021h,024h,026h,028h,02ah,02dh ;
DT 02fh,032h,034h,037h,039h,03ch,03fh,041h,044h,047h,04ah,04dh,050h ;
DT 052h,055h,058h,05bh,05eh,061h,065h,068h,06bh,06eh,071h,074h,077h ;
DT 07ah ;
;-------------------------------------------------------------------------;
ORG 100H
;
LINES addwf PCL,F
dt '1','1','z','v','6','2','8'
;*************************************************************************;
;=========================================================================;
; Блок подпрограмм ;
;=========================================================================;
;*************************************************************************;
; Подпрограмма умножения ;
;-------------------------------------------------------------------------;
DELAY_1 ;-------------------------------------------;
MOVLW .70 ; ;
MOVWF TMR0 ; ;
; ; Каждый цикл - сброс WDT и проверка, не дос;
PS101 CLRWDT ; тиг ли TMR0 числа 128? Если да, то выходим;
BTFSS TMR0,7 ; из цикла, иначе - продолжаем. ;
GOTO PS101 ; ;
; ; ;
RETLW 0 ;-------------------------------------------;
;*************************************************************************;
; Участок инициализации: установка портов ;
;*************************************************************************;
START MOVLW B'00110111' ; Отключение компараторов ;
MOVWF CMCON ; ;
CLRF PIR1 ; ;
;--------------------------- ; ;
CLRF TMR0 ; ;
CLRWDT ; ;
;--------------------------- ;-------------------------------------------;
BANK1 ; ;
MOVLW CONF_PORTA ; Конфигурация PORTA ;
MOVWF TRISA^80H ; ;
MOVLW CONF_PORTB ; Конфигурация PORTB ;
MOVWF TRISB^80H ; Предварит. делитель на входе TMR0 1:2 ;
MOVLW B'11000000' ; ;
MOVWF OPTREG^80H ; к +Uпит ;
CLRF VRCON^80H ; тора ;
CLRF PIE1^80H ; Очистка рег-ра прерываний от периферии ;
MOVLW .128 ; ;
MOVWF PR2^80H ; ;
BANK0 ; ;
;---------------------------- ;------------------------------------------ ;
MOVLW B'00010101' ; ;
MOVWF T1CON ; ;
; ; ;
MOVLW B'00000100' ; ;
MOVWF T2CON ; ;
; ; ;
MOVLW B'00001111' ; ;
MOVWF CCP1CON ; ;
;--------------------------- ;-------------------------------------------;
CLRF INTCON ; ;
; ; ;
MOVLW 28H ; ;
MOVWF FSR ;-------------------------------------------;
;*************************************************************************;
; ГЛАВНАЯ ПРОГРАММА ;
;=========================================================================;
;*************************************************************************;
;*************************************************************************;
; Основной цикл ;
;-------------------------------------------------------------------------;
LOOP CALL DELAY_1 ; ;
;=============================;===========================================;
INCF CNT1,F ; Приращение счетчика-указателя таблицы фор-;
MOVLW .248 ; мирования синуса 30 Гц. ;
SUBWF CNT1,W ; Изменение от 0 до 248 выборок. ;
SKPNC ; ;
CLRF CNT1 ; ;
;-----------------------------;-------------------------------------------;
BSF OUT2 ; ;
;-----------------------------;-------------------------------------------;
CALL TABL1 ; Извлекаем текущее значение синуса 30 Гц ;
;=============================;===========================================;
MOVWF TEMP1 ; ;
CLRC ; ;
RRF TEMP1,W ; ;
MOVWF CCPR1L ; Вывод полученного результата ;
; ; ;
MOVLW 0CFH ; ;
MOVWF CCP1CON ; ;
; ; ;
BTFSC TEMP1,7 ; ;
BSF CCP1CON,4 ; ;
;=============================;===========================================;
LOP20 INCF FSR,F ; ;
MOVLW 5FH ; ;
XORWF FSR,W ; ;
SKPZ ; ;
GOTO LOP10 ; ;
; ; ;
MOVLW 28H ; ;
MOVWF FSR ; ;
;-----------------------------;-------------------------------------------;
LOP10 BCF OUT2 ; ;
GOTO LOOP ;-------------------------------------------;
;*************************************************************************;
END


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru