Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
07.06.2007, 11:43
|
#1
|
Прописка
Регистрация: 23.03.2005
Адрес: Россия, г. Абакан
Сообщений: 109
Сказал спасибо: 0
Сказали Спасибо 22 раз(а) в 7 сообщении(ях)
|
Вопрос по C для MCS51
Вопрос, конечно глупый, но тем не менее:
как считать ножки порта (Р0) в С (придумали же язык чтоб я парился ) ?
В ассме всё очевидно - запись в защёлку считывание с выходов...
|
|
|
|
07.06.2007, 12:24
|
#2
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
kurs8051.narod.ru там много примеров и KEIL.com
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
07.06.2007, 12:39
|
#3
|
Прописка
Регистрация: 16.01.2007
Сообщений: 104
Сказал спасибо: 0
Сказали Спасибо 8 раз(а) в 6 сообщении(ях)
|
// в IAR
char v = P0_bit.P0X; // где X - номер контакта
|
|
|
|
07.06.2007, 14:17
|
#4
|
Прописка
Регистрация: 23.03.2005
Адрес: Россия, г. Абакан
Сообщений: 109
Сказал спасибо: 0
Сказали Спасибо 22 раз(а) в 7 сообщении(ях)
|
avr123-nm-ru
там всё на ассемблере
um
А это не чтение защёлки?
|
|
|
|
07.06.2007, 18:20
|
#5
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Сообщение от aversI
|
avr123-nm-ru
там всё на ассемблере
|
А если ВНИМАТЕЛЬНО посмотреть ? Это часто помогает.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
07.06.2007, 22:10
|
#6
|
Вид на жительство
Регистрация: 12.04.2007
Сообщений: 348
Сказал спасибо: 2
Сказали Спасибо 36 раз(а) в 32 сообщении(ях)
|
CodeVision AVR например так будет
char a = PINX.Y // X - порт, Y - номер бита
|
|
|
|
08.06.2007, 11:57
|
#7
|
Почётный гражданин KAZUS.RU
Регистрация: 26.08.2006
Сообщений: 1,405
Сказал спасибо: 1
Сказали Спасибо 89 раз(а) в 69 сообщении(ях)
|
на Кейле выглядит так
Код:
|
40 uchar putN (uchar c)
41 {ACC=c;
42 1 while (TI==0) {}
43 1 TI=0;
44 1 P3_3=0; // разрешили выход (:7 процика)
45 1 SBUF=ACC;
46 1
47 1 while (TI==0) {}
48 1
49 1 delay100u(); // чтоб не глушился стоп-бит
50 1 P3_3=1; // закрыли выход (:7 процика)
51 1 return c;
52 1 } |
************************************************** ****
то что выше компилируется следующим образом:
********************************
Код:
|
; FUNCTION _putN (BEGIN)
;---- Variable 'c' assigned to Register 'R6' ----
0000 AE07 MOV R6,AR7
; SOURCE LINE # 40
; SOURCE LINE # 41
0002 EE MOV A,R6
0003 ?C0011:
; SOURCE LINE # 42
0003 3099FD JNB TI,?C0011
0006 ?C0012:
; SOURCE LINE # 43
0006 C299 CLR TI
; SOURCE LINE # 44
0008 C2B3 CLR P3_3
; SOURCE LINE # 45
000A F599 MOV SBUF,A
000C ?C0013:
C51 COMPILER V6.00i TESTLINE 10/27/2006 18:18:29 PAGE 5
; SOURCE LINE # 47
000C 3099FD JNB TI,?C0013
000F ?C0014:
; SOURCE LINE # 49
000F 120000 R LCALL delay100u
; SOURCE LINE # 50
0012 D2B3 SETB P3_3
; SOURCE LINE # 51
0014 AF06 MOV R7,AR6
; SOURCE LINE # 52
0016 ?C0015:
0016 22 RET
; FUNCTION _putN (END) |
|
|
|
|
09.06.2007, 13:10
|
#8
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,955
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Сообщение от mrKirill
|
CodeVision AVR например так будет
char a = PINX.Y // X - порт, Y - номер бита
|
Речь шла о 51 семействе. В нем нету раздельных регистров на ввод и вывод, сам порт построен по схеме открытого коллектора и для того, чтобы пин был входом, надо просто записать в соотв. бит порта 1 - получится что-то типа "подтяжки" на Vcc, и эту линию порта можно безболезненно замыкать на 0. А читается - тот же бит порта, в который и пишется.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:22.
|
|