Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

От asm на С
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=3563
Страница 1 от 1

Автор:  kirchi [ Нед Яну 14, 2007 5:50 pm ]
Заглавие:  От asm на С

Това bsf STATUS,RP0 как ще стане на Сл Много благодаря за помоща.

Автор:  VSU [ Нед Яну 14, 2007 6:24 pm ]
Заглавие: 

например на HI-TECH ще стане

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

Автор:  kirchi [ Нед Яну 14, 2007 6:32 pm ]
Заглавие: 

VSU написа:
например на HI-TECH ще стане

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


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

Автор:  ToHu [ Нед Яну 14, 2007 8:19 pm ]
Заглавие: 

Като цяло вярно, но по скоро трябва да знаеш как става по принцип.

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

sbit RP0 = 0x03^5

или

#define STATUS 0x03
#define RP0 5

sbit RP0 = STATUS^RP0

Автор:  kirchi [ Нед Яну 14, 2007 10:39 pm ]
Заглавие: 

ToHu написа:
Като цяло вярно, но по скоро трябва да знаеш как става по принцип.

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

sbit RP0 = 0x03^5

или

#define STATUS 0x03
#define RP0 5

sbit RP0 = STATUS^RP0


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

Автор:  kirchi [ Нед Яну 14, 2007 10:46 pm ]
Заглавие: 

А как да напиша RB0 да стане 1.

Автор:  ToHu [ Нед Яну 14, 2007 11:58 pm ]
Заглавие: 

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

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

Автор:  kirchi [ Пон Яну 15, 2007 12:26 am ]
Заглавие: 

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

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


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

Автор:  Predator_MF [ Пон Яну 15, 2007 2:54 am ]
Заглавие: 

В CCS дефинираш бит или байт от портовете така
Код:
#BYTE PORTB = 0x06
#BIT LED = PORTB.0

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

Автор:  kirchi [ Пон Яну 15, 2007 6:25 pm ]
Заглавие: 

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

Автор:  Predator_MF [ Пон Яну 15, 2007 7:19 pm ]
Заглавие: 

kirchi написа:
Дава ми грешки-A numeric expression must appear here


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

Автор:  kirchi [ Пон Яну 15, 2007 7:56 pm ]
Заглавие: 

Predator_MF написа:
kirchi написа:
Дава ми грешки-A numeric expression must appear here


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


Прикачени файлове:
Коментар на файл: snimka
1.JPG
1.JPG [ 28.73 KiB | Прегледано 1334 пъти ]

Автор:  Predator_MF [ Пон Яну 15, 2007 8:55 pm ]
Заглавие: 

Тая грешка ще ти я дава, защото дефинираш #byte/#bit в тялото на функция - постави ги в началото .c или .h файла

Автор:  kirchi [ Пон Яну 15, 2007 8:59 pm ]
Заглавие: 

Predator_MF написа:
Тая грешка ще ти я дава, защото дефинираш #byte/#bit в тялото на функция - постави ги в началото .c или .h файла


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

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/