|
|
  |
инвертировать один бит |
|
|
|
Mar 2 2011, 05:57
|
Участник

Группа: Свой
Сообщений: 65
Регистрация: 9-02-11
Из: Трехгорный
Пользователь №: 62 814

|
а такая конструкция работает? FIO0PIN ^= (1<<19); что-то при отладке через keil смотрю - инвертируются какие-то левые биты порта 0, но не 19-й...
|
|
|
|
|
Mar 2 2011, 08:28
|
Участник

Группа: Свой
Сообщений: 65
Регистрация: 9-02-11
Из: Трехгорный
Пользователь №: 62 814

|
Цитата(V_G @ Mar 2 2011, 11:46)  А какого типа (в смысле длины в битах) переменная FIO0PIN? И какого типа (в смысле длины в битах) константа (1<<19)? Может, в вашем компиляторе надо писать (1L<<19)? 32-разрядные (LPC2478) но тут в другом дело. замаскировал все другие биты и стало все нормально. FIO0MASK = ~(1<<19); FIO0PIN ^= (1<<19); правильно ли это?
|
|
|
|
|
Mar 2 2011, 10:51
|
Участник

Группа: Свой
Сообщений: 65
Регистрация: 9-02-11
Из: Трехгорный
Пользователь №: 62 814

|
Цитата(Сергей Борщ @ Mar 2 2011, 15:30)  С точки зрения языка конструкция FIO0PIN ^= (1<<19); - правильная. Но вам надо очень внимательно читать описание этого регистра - возможно запись единиц в него дает какие-то побочные эффекты, возможно он вообще не предназанчен для записи. в какой-то момент ошибка ушла. работает. возможно действительно где-то своим ошибочным кодом порождал побочный эффект. в любом случае спасибо.
|
|
|
|
|
Mar 3 2011, 06:37
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(yurmala @ Mar 2 2011, 09:57)  а такая конструкция работает? FIO0PIN ^= (1<<19); что-то при отладке через keil смотрю - инвертируются какие-то левые биты порта 0, но не 19-й... 1L<<19 Или нет?
|
|
|
|
|
Mar 3 2011, 07:47
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(Сергей Борщ @ Mar 3 2011, 11:17)  Или нет. int 32-битный. long также 32-битный. Даже для сдвига на 31 бит достаточно 1U<<31, для меньших можно и без квалификаторов. L пользы не принесет. А почему L пользы не принесет, а U - принесет? Какая между ними разница при 32-х разрядах?
|
|
|
|
|
Mar 3 2011, 11:37
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(_Bill @ Mar 3 2011, 11:47)  А почему L пользы не принесет, а U - принесет? Какая между ними разница при 32-х разрядах? Спасибо! Понял.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|