mirror of
https://github.com/logicog/RTLPlayground.git
synced 2026-08-30 14:52:51 +08:00
Add reg_bit_test function
This commit is contained in:
@@ -122,6 +122,7 @@ void print_reg(uint16_t reg);
|
||||
uint8_t sfp_read_reg(uint8_t slot, uint8_t reg);
|
||||
void reg_bit_set(uint16_t reg_addr, char bit);
|
||||
void reg_bit_clear(uint16_t reg_addr, char bit);
|
||||
uint8_t reg_bit_test(uint16_t reg_addr, char bit);
|
||||
void sfr_mask_data(uint8_t n, uint8_t mask, uint8_t set);
|
||||
void sfr_set_zero(void);
|
||||
void reset_chip(void);
|
||||
|
||||
@@ -457,6 +457,23 @@ void reg_bit_clear(uint16_t reg_addr, char bit)
|
||||
reg_write_m(reg_addr);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* This sets a bit in the 32bit wide switch register reg_addr
|
||||
*/
|
||||
uint8_t reg_bit_test(uint16_t reg_addr, char bit)
|
||||
{
|
||||
uint8_t bit_mask = 1 << (bit & 0x7);
|
||||
|
||||
bit >>= 3;
|
||||
reg_read_m(reg_addr);
|
||||
bit_mask = bit_mask;
|
||||
if (sfr_data[3-bit] & bit_mask)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* This masks the sfr data fields, first &-ing with ~mask, then setting the bits in set
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user