16+
Воскресенье
18 ноября
Вход |Карта сайта | |Upload |codebook | PARTS

 О смысле всего сущего 0xFF

 Средства и методы разработки

 Мобильная и беспроводная связь

 Блошиный рынок Объявления

caxapa

Микроконтроллеры ARM 

AVR PIC MSP PLD,FPGA,DSP 

Кибернетика Технологии 

Схемы, платы, компоненты 

Микроконтроллеры

 
   Новая тема Правила Регистрация Поиск »» Архив
Вернуться в конференциюТопик полностью
m16_home  (07.09.2018 21:00) , в ответ на В моих программах есть модуль фиксации событий, в котором активно используются битовые поля. Событий становилось больше и больше > битов тоже > вот и 64-х битные переменные пригодились. автор: AlexG
если событий станет > 64? зачем такой изврат? 
не знаю как это описать на сях, на асме для авра написал макросы где BITMAP - стартовый адрес битового поля, BITLONG - длина битового поля в байтах. соответственно размер битового поля = BITLONG * 8. и несколько макросов операций с битами
...........................................................
.macro	sbit             // BIT  (set BIT)

	.if  (BITLONG -1) >= @0

		lds	r16, (BITMAP + (@0 / 8))
		sbr	r16, ( 1 << (@0%8))
		sts	(BITMAP + (@0 / 8)), r16
	.else
	.error "End off BITMAP"
	.endif
.endm
...........................................................
.macro	cbit             // BIT  (clear BIT)

	.if  (BITLONG -1) >= @0

		lds	r16, (BITMAP + (@0 / 8))
		cbr	r16, ( 1 << (@0%8))
		sts	(BITMAP + (@0 / 8)), r16
	.else
	.error "End off BITMAP"
	.endif
.endm
...........................................................
.macro	sbbs             // BIT  (skipping the next command if BIT=1)

	.if  (BITLONG -1) >= @0

		lds	r16, (BITMAP + (@0 / 8))
		sbrs	r16, (@0%8)
	.else
	.error "End off BITMAP"
	.endif

.endm
...........................................................
.macro	jbc		// BIT, ADR  (if BIT=0 then  PC=ADR)

	.if  (BITLONG -1) >= @0

		lds	r16, (BITMAP + (@0 / 8))
		sbrs	r16, (@0%8)
		jmp	@1
	.else
	.error "End off BITMAP"
	.endif

.endm
.................................................................................
Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7527 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXVIII