在8位数码管中 一定要记得 ca 是选中信号用阳极 信号用阴极 ca是共阳极 cc相反
一定要先送要显示的数码管的选通信号 再送码段信号 这个问题搞得我焦头烂额。。。。。。。
在avr中
PORTB|=(1<<PB0) 的解释:
1.在M8的头文件(iom8.h)中,PB0定义为0 (建议看看使用的单片机相应的头文件)
2.1<<PB0 意思就是,将1左移PB0(即0)个位,得到0B00000001 (在这里设为A)
3.PORTB|= A 也可以写为: PORTB = PORTB | A , 即 PORTB = PORTB | 0B00000001
4.所以,得到的最终效果就是将 PORTB口的0脚设为高电平
#define 为预定义,一般看过C人都懂的
#define A B 意思就是说,用A来代替B,下面程序中只要出现A的地方,都会被编译器解释为B (注意:最后是没有分号;的)
#define Enable_Laser() PORTB|=(1<<PB0) 的意义就是:
用 Enable_Laser() 这个表达式 来代替 PORTB|=(1<<PB0)
有人这样写c
仅是个人习惯,仅供参考:
先这样定义:
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
再定义实际要操作的端口:
#define LED_ON cbi(PORTD,7) //在程序用LED_ON代替cbi(PORTD,7)
#define LED_OFF sbi(PORTD,7) //在程序用LED_OFF代替sbi(PORTD,7)