Отговори на тема  [ 14 мнения ] 
От asm на С 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Яну 03, 2007 8:52 pm
Мнения: 89
Местоположение: Димитровград
Мнение От asm на С
Това bsf STATUS,RP0 как ще стане на Сл Много благодаря за помоща.


Нед Яну 14, 2007 5:50 pm
Профил
Ранг: Напреднал
Ранг: Напреднал

Регистриран на: Нед Авг 14, 2005 1:08 pm
Мнения: 433
Местоположение: Казанлък
Мнение 
например на HI-TECH ще стане

RP0 = 1;
:)
само че компилатора си се грижи сам да адресира банките с променливите така това не би трябвало да е твоя грижа


Нед Яну 14, 2007 6:24 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Яну 03, 2007 8:52 pm
Мнения: 89
Местоположение: Димитровград
Мнение 
VSU написа:
например на HI-TECH ще стане

RP0 = 1;
:)
само че компилатора си се грижи сам да адресира банките с променливите така това не би трябвало да е твоя грижа


Мерси много. :)


Нед Яну 14, 2007 6:32 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение 
Като цяло вярно, но по скоро трябва да знаеш как става по принцип.

Преди да работиш би трябвло да деклрираш като битова променлива, например в Keil

sbit RP0 = 0x03^5

или

#define STATUS 0x03
#define RP0 5

sbit RP0 = STATUS^RP0


Нед Яну 14, 2007 8:19 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Яну 03, 2007 8:52 pm
Мнения: 89
Местоположение: Димитровград
Мнение 
ToHu написа:
Като цяло вярно, но по скоро трябва да знаеш как става по принцип.

Преди да работиш би трябвло да деклрираш като битова променлива, например в Keil

sbit RP0 = 0x03^5

или

#define STATUS 0x03
#define RP0 5

sbit RP0 = STATUS^RP0


Ааааааааааааааааа ясно, Аз се чудя що ми дава грешка.


Нед Яну 14, 2007 10:39 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Яну 03, 2007 8:52 pm
Мнения: 89
Местоположение: Димитровград
Мнение 
А как да напиша RB0 да стане 1.


Нед Яну 14, 2007 10:46 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение 
Значи това са неща зависимо от компилатора, както колегат по горе спомена RP0=0 в HiTech сигурно работи, защото в модела на процесора имам деклараия че той е бит 5 на статус регистъра.
Тва трябва да напрвиш за всички битови променливи които искаш д ауправялваш по този начин.
B.0 ти е бит 0 на порт 0х06, естетвено тук все говоря за 16-та серия. Т.е.
sbit RB0=0x06^0
също така можеш директно да пишеш по порта с байтови команди, в твоиа случай трябва да направиш AND с 0xFE, това на асемблер се компилира като andlf, koeto което обаче е макрос и отнема повече време за изпълнение от bcf.

едит.
кой компилатор ползваш между другото?


Нед Яну 14, 2007 11:58 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Яну 03, 2007 8:52 pm
Мнения: 89
Местоположение: Димитровград
Мнение 
ToHu написа:
Значи това са неща зависимо от компилатора, както колегат по горе спомена RP0=0 в HiTech сигурно работи, защото в модела на процесора имам деклараия че той е бит 5 на статус регистъра.
Тва трябва да напрвиш за всички битови променливи които искаш д ауправялваш по този начин.
B.0 ти е бит 0 на порт 0х06, естетвено тук все говоря за 16-та серия. Т.е.
sbit RB0=0x06^0
също така можеш директно да пишеш по порта с байтови команди, в твоиа случай трябва да направиш AND с 0xFE, това на асемблер се компилира като andlf, koeto което обаче е макрос и отнема повече време за изпълнение от bcf.

едит.
кой компилатор ползваш между другото?


Това не го знаех. Компилатора е CCS_PCWH_v4.020.


Пон Яну 15, 2007 12:26 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 07, 2004 1:22 pm
Мнения: 1949
Местоположение: София
Мнение 
В CCS дефинираш бит или байт от портовете така
Код:
#BYTE PORTB = 0x06
#BIT LED = PORTB.0

..
..
PORTB = 0x80; // установява 0x80 на PORTB
LED = 1; // установява PORTB.0 в "1"
LED = 0; // установява PORTB.0 в "0"


Пон Яну 15, 2007 2:54 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Яну 03, 2007 8:52 pm
Мнения: 89
Местоположение: Димитровград
Мнение 
Predator_MF написа:
В CCS дефинираш бит или байт от портовете така
Код:
#BYTE PORTB = 0x06
#BIT LED = PORTB.0

..
..
PORTB = 0x80; // установява 0x80 на PORTB
LED = 1; // установява PORTB.0 в "1"
LED = 0; // установява PORTB.0 в "0"


Дава ми грешки-A numeric expression must appear here


Пон Яну 15, 2007 6:25 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 07, 2004 1:22 pm
Мнения: 1949
Местоположение: София
Мнение 
kirchi написа:
Дава ми грешки-A numeric expression must appear here


И къде е точно това "here" ??


Пон Яну 15, 2007 7:19 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Яну 03, 2007 8:52 pm
Мнения: 89
Местоположение: Димитровград
Мнение 
Predator_MF написа:
kirchi написа:
Дава ми грешки-A numeric expression must appear here


И къде е точно това "here" ??


Прикачени файлове:
Коментар на файл: snimka
1.JPG
1.JPG [ 28.73 KiB | Прегледано 1330 пъти ]
Пон Яну 15, 2007 7:56 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 07, 2004 1:22 pm
Мнения: 1949
Местоположение: София
Мнение 
Тая грешка ще ти я дава, защото дефинираш #byte/#bit в тялото на функция - постави ги в началото .c или .h файла


Пон Яну 15, 2007 8:55 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Яну 03, 2007 8:52 pm
Мнения: 89
Местоположение: Димитровград
Мнение 
Predator_MF написа:
Тая грешка ще ти я дава, защото дефинираш #byte/#bit в тялото на функция - постави ги в началото .c или .h файла


Аааааааа леееееее, много мерси :)


Пон Яну 15, 2007 8:59 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 14 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни