Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

не понял что значит "ВЕСЬ код в тегах [pre] [/pre]" поэтому вылож...{+}(+)

Отправлено beginer 16 января 2008 г. 12:39
В ответ на: Зачем делать sei в ISR? Давай ВЕСЬ код в тегах [pre] [/pre] - разберемся отправлено =AVR= 15 января 2008 г. 21:39

Текст заголовка сообщения полностью: не понял что значит "ВЕСЬ код в тегах [pre] [/pre]" поэтому выложил просто код

.Device ATmega8L ;
.include "m8def.inc"



;***** Subroutine Register Variables
; mpy16u - 16*16 bit unsigned
.def mc16uL =r16 ;multiplicand low byte
.def mc16uH =r17 ;multiplicand high byte
.def mp16uL =r18 ;multiplier low byte
.def mp16uH =r19 ;multiplier high byte
.def m16u0 =r18 ;result byte 0 (LSB)
.def m16u1 =r19 ;result byte 1
.def m16u2 =r20 ;result byte 2
.def m16u3 =r21 ;result byte 3 (MSB)

;***** Subroutine Register Variables
; div16u - 16/16 Bit Unsigned Division
.def drem16uL=r14
.def drem16uH=r15
.def dres16uL=r16
.def dres16uH=r17
.def dd16uL =r16
.def dd16uH =r17
.def dv16uL =r18
.def dv16uH =r19


;***** Subroutine Register Variables
;* "bin2BCD8" - 8-bit Binary to BCD conversion
.def fbin =r16 ;8-bit binary value
.def tBCDL =r16 ;BCD result MSD
.def tBCDH =r17 ;BCD result LSD

.def previous_tem_adc = R12
.def Temp1=R16
.def Temp2=R17
.def Temp3=R18
.def Temp4=R19



.dseg
.ORG 0x0100 ;
Digit: .byte 0x12

.ORG 0x0114
count: .byte 0x01

.cseg
.org 0x00

rjmp RESET ; Reset Handler

; rjmp EXT_INT0 ; IRQ0 Handler
; rjmp EXT_INT1 ; IRQ1 Handler
; rjmp TIM2_COMP ; Timer2 Compare Handler

.org $004 rjmp TIM2_OVF ; Timer2 Overflow Handler

; rjmp TIM1_CAPT ; Timer1 Capture Handler
; rjmp TIM1_COMPA ; Timer1 CompareA Handler
; rjmp TIM1_COMPB ; Timer1 CompareB Handler
; rjmp TIM1_OVF ; Timer1 Overflow Handler

.org $009 rjmp TIM0_OVF ; Timer0 Overflow Handler

; rjmp SPI_STC ; SPI Transfer Complete Handler
; rjmp USART_RXC ; USART RX Complete Handler
; rjmp USART_UDRE ; UDR Empty Handler
; rjmp USART_TXC ; USART TX Complete Handler
; rjmp ADC ; ADC Conversion Complete Handler
; rjmp EE_RDY ; EEPROM Ready Handler
; rjmp ANA_COMP ; Analog Comparator Handler
; rjmp TWSI ; Two-wire Serial Interface Handler
; rjmp SPM_RDY ; Store Program Memory Ready Handler



RESET:
cli
ldi r16,high(RAMEND) ; Main program start
out SPH,r16 ; Set stack pointer to top of RAM
ldi r16,low(RAMEND)
out SPL,r16
sei

rcall init
rcall kalibr

start:
nop
rjmp start




;*****************************************
init:

ldi r16,0b11110000 ;
out DDRB,r16
ldi r16,0b11110000 ;
out PORTB,r16

ldi r16,0b00000000 ;
out DDRC,r16 ;
ldi r16,0b00000000 ;
out PORTC,r16

ldi r16,0b11111111 ;
out DDRD,r16 ;
ldi r16,0b11101111 ;
out PORTD,r16





ldi temp1,0
ldi r31,0x01
clr r30
st Z+,temp1 ; cell N 0
st Z+,temp1 ; cell N 1
inc r30
inc r30
ldi temp1,16
st Z+,temp1 ; cell N 4
st Z+,temp1 ; cell N 5

ldi temp1,0
st Z+,temp1 ; cell N 6
st Z+,temp1 ; cell N 7
st Z+,temp1 ; cell N 8
st Z+,temp1 ; cell N 9
st Z+,temp1 ; cell N A
st Z+,temp1 ; cell N B
st Z+,temp1 ; cell N C
st Z+,temp1 ; cell N D

ret


;*****************************************
TIM0_OVF:
sei
ldi temp1,0b00000001 ; timer interrupt enable
out TIMSK,temp1

ldi temp1,0b00000000 ; prescaler T0 = 0
out TCCR0,temp1

ldi temp1,0b00000010 ; prescaler T2 = 8
out TCCR2,temp1

ldi temp1,80 ; 380 mks
out TCNT0,temp1

cbi PORTD,3 ; vykl - electric impulse

reti
;*****************************************

TIM2_OVF:
sei
ldi temp1,0b00000001 ; timer interrupt enable
out TIMSK,temp1

ldi temp1,0b00000010 ; prescaler T0 = 8
out TCCR0,temp1

ldi temp1,0b00000000 ; prescaler T2 = 0
out TCCR2,temp1

ldi temp1,154 ; 219 mks
out TCNT0,temp1

sbi PORTD,3 ; vkl - electric impulse

reti
;*****************************************



.include "kalibr.inc"




; dalee file kalibr.inc

;***** Specify Device
.device ATmega8
kalibr:
sei
ldi temp1,0b00000001 ; timer interrupt enable
out TIMSK,temp1

ldi temp1,0b00000010 ; prescaler T0 = 8
out TCCR0,temp1

ldi temp1,0b00000000 ; prescaler T2 = 0
out TCCR2,temp1

ldi temp1,154 ; 219 mks
out TCNT0,temp1

sbi PORTD,3 ; vkl - electric impulse


ret


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 90:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru