реклама на сайте
подробности

 
 
> Программа для микроконтроллера, Как работает код
Aleksandr_KPI
сообщение Apr 14 2010, 14:53
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Здравствуйте.

Мне нужно запрограммировать МК C8051F020. В ассемблере я не силен, а с Си доводилось работать, поэтому решил использовать последний. Скачал книгу: Магда Ю.С. "Микроконтроллеры серии 8051: практический подход". По ней и планирую программировать. В процессе изучения возник вопрос касательно применения ассемблера в коде Си (в книге говорится может понадобится). Код:

Цитата
#pragma asm

SETB ET0;
SETB EA;

#pragma endasm;


SETB EA - запрет на любые прерывания, а что такое SETB ET0.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Aleksandr_KPI
сообщение Jul 23 2010, 10:43
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Разбираю работу примера программы из пакета Silicon Laboratories IDE. Наткнулся на такой отрывок кода:

Код
; Set P1.6 (LED) as digital output in push-pull mode.  
               orl   P1MDIN, #40h    
               orl   P1MDOUT,#40h


Команда orl P1MDOUT,#40h настраивает порт в режим выхода, а зачем его настраивают на вход: команда orl P1MDIN, #40h.

Весь код:

Код
$NOMOD51
$include (c8051f020.inc)              ; Include register definition file.


                GREEN_LED      equ   P1.6           ; Port I/O pin connected to sound generator.    

               cseg AT 0
               ljmp Main          ; Locate a jump to the start of code at
                                      ; the reset vector.


Blink          segment  CODE

               rseg     Blink         ; Switch to this code segment.
               using    0             ; Specify register bank for the following
                                      ; program code.

Main:         ; Disable the WDT. (IRQs not enabled at this point.)
              ; If interrupts were enabled, we would need to explicitly disable
              ; them so that the 2nd move to WDTCN occurs no more than four clock
              ; cycles after the first move to WDTCN.

               mov   WDTCN, #0DEh
               mov   WDTCN, #0ADh

  ; Enable the Port I/O Crossbar
               mov   XBR2, #40h

  ; Set P1.6 (LED) as digital output in push-pull mode.  
               orl   P1MDIN, #40h    
               orl   P1MDOUT,#40h

              ; Initialize LED to OFF
               clr   GREEN_LED

         ; Simple delay loop.
Loop2:         mov   R7, #03h            
Loop1:         mov   R6, #00h
Loop0:         mov   R5, #00h
               djnz  R5, $
               djnz  R6, Loop0
               djnz  R7, Loop1
               cpl   GREEN_LED        ; Toggle LED.
               jmp   Loop2
END
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jul 23 2010, 15:20
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Aleksandr_KPI @ Jul 23 2010, 14:43) *
Команда orl P1MDOUT,#40h настраивает порт в режим выхода, а зачем его настраивают на вход: команда orl P1MDIN, #40h.

Чтобы в паре с верхним ключем работал Pull-up
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Aleksandr_KPI   Программа для микроконтроллера   Apr 14 2010, 14:53
- - toweroff   Цитата(Aleksandr_KPI @ Apr 14 2010, 19:08...   Apr 14 2010, 17:01
- - Aleksandr_KPI   Выполнил программу по учебнику, а она работает не ...   Apr 15 2010, 14:32
|- - Палыч   Цитата(Aleksandr_KPI @ Apr 15 2010, 17:47...   Apr 15 2010, 15:13
- - Aleksandr_KPI   ЦитатаЧем Вы там пользуетесь для отладки Вашей про...   Apr 16 2010, 07:18
- - MrYuran   Возможно, что периферия не симулируется, либо симу...   Apr 16 2010, 07:23
- - Aleksandr_KPI   ЦитатаБросайте хренью заниматься, возьмите реальну...   Apr 16 2010, 07:28
|- - MrYuran   Цитата(Aleksandr_KPI @ Apr 16 2010, 11:43...   Apr 16 2010, 07:31
- - Aleksandr_KPI   ЦитатаБросайте хренью заниматься, возьмите реальну...   Apr 16 2010, 07:35
|- - MrYuran   Цитата(Aleksandr_KPI @ Apr 16 2010, 11:50...   Apr 16 2010, 07:47
- - Aleksandr_KPI   ЦитатаЯ имею в виду, что нужно поставить задачу и ...   Apr 16 2010, 08:09
|- - MrYuran   Цитата(Aleksandr_KPI @ Apr 16 2010, 12:24...   Apr 16 2010, 08:57
- - Aleksandr_KPI   По задумке автора прерывание вызывается программно...   Apr 16 2010, 09:34
|- - MrYuran   Цитата(Aleksandr_KPI @ Apr 16 2010, 13:49...   Apr 16 2010, 09:59
- - Aleksandr_KPI   Я не понял, выражайтесь яснее.   Apr 16 2010, 10:14
|- - MrYuran   Цитата(Aleksandr_KPI @ Apr 16 2010, 14:29...   Apr 16 2010, 11:05
- - Aleksandr_KPI   Биты прерывания устанавливаются нормально, не прои...   Apr 16 2010, 12:11
- - Hellper   watchdog отключите: КодPCA0MD &= ~0x40;   Apr 17 2010, 10:38
- - Aleksandr_KPI   Выдает ошибку. Код error C202: 'PCA0MD...   Apr 19 2010, 09:39
- - Hellper   Код WDTCN = 0xDE; // Disable watchdog tim...   Apr 19 2010, 10:46
- - Aleksandr_KPI   Странно, пишет: Код error C202: 'WDTCN...   Apr 19 2010, 19:01
- - Hellper   Код#include <C8051F020.h>   Apr 20 2010, 05:57
- - Aleksandr_KPI   Сначала выдавало ошибку: Код Error C231 Redefiniti...   Apr 20 2010, 08:14
- - Aleksandr_KPI   Разобрался, MrYuran был прав. ЦитатаНу вот у ва...   Apr 20 2010, 12:31
|- - MrYuran   Цитата(Aleksandr_KPI @ Apr 20 2010, 16:46...   Apr 20 2010, 13:06
- - Aleksandr_KPI   ЦитатаНо это неправильный подход. printf() выдаёт ...   Apr 20 2010, 14:34
- - Aleksandr_KPI   Подскажите как правильно понимать работу регистра ...   Apr 21 2010, 08:00
|- - MrYuran   Цитата(Aleksandr_KPI @ Apr 21 2010, 12:15...   Apr 21 2010, 08:10
- - Aleksandr_KPI   Спасибо понял. Дошел до работы с вставками ассемб...   Apr 21 2010, 11:43
- - Aleksandr_KPI   Вот нашел на одном форуме: ЦитатаКороче, не испол...   Apr 23 2010, 08:02
|- - Палыч   Цитата(Aleksandr_KPI @ Apr 23 2010, 11:17...   Apr 23 2010, 09:14
- - Aleksandr_KPI   ЦитатаПомниться (а, может быть я - не прав), что в...   Apr 23 2010, 10:49
|- - Палыч   Цитата(Aleksandr_KPI @ Apr 23 2010, 14:04...   Apr 23 2010, 11:16
- - Aleksandr_KPI   Да. Спасибо, Вы абсолютно правы.   Apr 23 2010, 11:46
- - Aleksandr_KPI   Перешел из пакета keil uvision3 в keil uvision4 и ...   Apr 28 2010, 12:07
- - Aleksandr_KPI   Подскажите почему программа выдает ошибку error A9...   Apr 29 2010, 11:52
|- - Палыч   Не знаю - что Вы здесь задумали, но к битам байта ...   Apr 29 2010, 12:26
- - Aleksandr_KPI   Программа не моя, попросили коечто изменить, выда...   Apr 29 2010, 13:38
- - Aleksandr_KPI   Подскажите в чем может быть ошибка. Практически в ...   Apr 30 2010, 14:03
|- - Палыч   Цитата(Aleksandr_KPI @ Apr 30 2010, 18:03...   Apr 30 2010, 14:39
- - Aleksandr_KPI   Подскажите, как код передает данные во внешнюю пам...   Jun 7 2010, 11:07
|- - demiurg_spb   Цитата(Aleksandr_KPI @ Jun 7 2010, 15:07)...   Jun 7 2010, 20:39
- - Aleksandr_KPI   ЦитатаMOVX через косвенную адресацию поместит соде...   Jun 8 2010, 10:55
|- - Палыч   Цитата(Aleksandr_KPI @ Jun 8 2010, 14:55)...   Jun 8 2010, 15:32
- - Aleksandr_KPI   ЦитатаПотому, что разработчики МК51 так когда-то с...   Jun 10 2010, 13:38
|- - Палыч   Цитата(Aleksandr_KPI @ Jun 10 2010, 17:38...   Jun 11 2010, 09:57
- - Aleksandr_KPI   Спасибо за пояснение.   Jun 11 2010, 10:13
- - Aleksandr_KPI   1. Подскажите почему код выполняет одинаковую врем...   Jun 14 2010, 12:09
|- - toweroff   Цитата(Aleksandr_KPI @ Jun 14 2010, 16:09...   Jun 14 2010, 15:32
|- - ViKo   Цитата(Aleksandr_KPI @ Jun 14 2010, 15:09...   Jun 15 2010, 08:41
- - Aleksandr_KPI   Подскажите почему компилятор не видит некоторые ре...   Jun 16 2010, 11:22
|- - Палыч   Цитата(Aleksandr_KPI @ Jun 16 2010, 15:22...   Jun 16 2010, 14:28
- - Aleksandr_KPI   А как быть если программа на ассемблере?   Jun 16 2010, 14:53
|- - Палыч   Цитата(Aleksandr_KPI @ Jun 16 2010, 18:53...   Jun 16 2010, 15:21
- - Aleksandr_KPI   Спасибо все нашел, только в случае с keil uVision ...   Jun 17 2010, 09:30
|- - Палыч   Цитата(Aleksandr_KPI @ Jun 17 2010, 13:30...   Jun 17 2010, 11:22
- - Aleksandr_KPI   ЦитатаИли в опциях проекта (Options -> A51) убр...   Jun 17 2010, 11:50
|- - Палыч   Цитата(Aleksandr_KPI @ Jun 17 2010, 15:50...   Jun 17 2010, 12:17
- - Aleksandr_KPI   ЦитатаВ Push-Pull: два ключа - один соединяет ногу...   Jun 18 2010, 11:01
|- - Dog Pawlowa   Цитата(Aleksandr_KPI @ Jun 18 2010, 15:01...   Jun 18 2010, 11:10
|- - Палыч   Цитата(Aleksandr_KPI @ Jun 18 2010, 15:01...   Jun 18 2010, 11:42
- - Aleksandr_KPI   Тоесть скорость выдачи данных через порт? А метод ...   Jun 18 2010, 11:44
|- - Палыч   Цитата(Aleksandr_KPI @ Jun 18 2010, 15:44...   Jun 18 2010, 12:42
|- - Mastercutor   Цитата(Aleksandr_KPI @ Jul 23 2010, 13:43...   Jul 26 2010, 12:01
- - Aleksandr_KPI   Иными словами 6 вывод порта 1 настраивается в режи...   Jul 26 2010, 09:41
- - Палыч   Цитата(Aleksandr_KPI @ Jul 26 2010, 13:41...   Jul 26 2010, 14:29
- - Mastercutor   Цитата(Палыч @ Jul 26 2010, 17:29) Смотри...   Jul 27 2010, 08:11


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 16:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01432 секунд с 7
ELECTRONIX ©2004-2016