用atmega16编程十位数计算机,个人总结的avr的atmega16l单片机程序.doc

41528d3028836879cd698677c3999917.gif个人总结的avr的atmega16l单片机程序.doc

ATMAGE16的C语言程序ATMAGE16的C语言程序1一、PB0口的PB01LED发光管闪烁的程序3二、PA0、PB0、PC0口的LED发光管闪烁的程序5三、I/O口的输入与输出6四、跑马灯8五、数码管计数显示设计9六、控制直流电机正反转13七、单片机的定时器(T/C0)应用18AVR原理图22一、PB0口的PB01LED发光管闪烁的程序INCLUDEINTMAINVOID{UNSIGNEDCHARI,J,K,LED0DDRB0XFF/ALLOUTPUTS/WHILE1{IFLEDPORTB|0X01/|使最后一位为1/ELSEPORTB///延时FORI0IINTMAINVOID{UNSIGNEDCHARI,J,K,LED0DDRB0XFF/ALLOUTPUTS/WHILE1{IFLEDPORTB0XFEELSEPORTB0XFFLEDLEDFORI0IINTMAINVOID{UNSIGNEDCHARI,J,K,LED0DDRA0XFF//为输出DDRB0XFFDDRC0XFFWHILE1{IFLED{PORTA|0XFFPORTB|0XFFPORTC|0XFF}ELSE{PORTAPORTBPORTC}LEDLED//取反延时FORI0I///延时US//VOIDDELAY_USINTT{DOTWHILET1}///延时MS/VOIDDELAY_MSUNSIGNEDINTT{WHILET0{DELAY_US1142T}}///主程序/INTMAINVOID{DDRA0XFF/ALLOUTPUTS/DDRB0XFF/ALLOUTPUTS/DDRC0XFF/ALLOUTPUTS/PORTA0XFFPORTB0XFFPORTC0XFFWHILE1{//IO口输出低电平有效,如0X01为十六进制数,二进制表示为00000001B,再取反A口输出//PORTA0X01//~表示取反DELAY_MS100//延时N秒PORTA0X02DELAY_MS100PORTA0X04DELAY_MS100PORTA0X08DELAY_MS100PORTA0X10DELAY_MS100PORTA0X20DELAY_MS100PORTA0X40DELAY_MS100PORTA0X80DELAY_MS100PORTA0X00//循环结束全亮B口输出//PORTB0X01DELAY_MS100PORTB0X02DELAY_MS100PORTB0X04DELAY_MS100PORTB0X08DELAY_MS100PORTB0X10DELAY_MS100PORTB0X20DELAY_MS100PORTB0X40DELAY_MS100PORTB0X80DELAY_MS100PORTB0X00C口输出//PORTC0X01DELAY_MS100PORTC0X02DELAY_MS100PORTC0X04DELAY_MS100PORTC0X08DELAY_MS100PORTC0X10DELAY_MS100PORTC0X20DELAY_MS100PORTC0X40DELAY_MS100PORTC0X80DELAY_MS100PORTC0X00}}四、跑马灯INCLUDEDEFINEUCHARUNSIGNEDCHARDEFINEUINTUNSIGNEDINTVOIDDELAYMSUINTI{UINTJFORI0I{FORJ8000J0J}}VOIDHORSEUCHARI{SWITCHI{CASE1PORTB0X01BREAKCASE2PORTB0X03BREAKCASE3PORTB0X07BREAKCASE4PORTB0X0FBREAKCASE5PORTB0X1FBREAKCASE6PORTB0X3FBREAKCASE7PORTB0X7FBREAKCASE8PORTB0XFFBREAKDEFAULTBREAK}}VOIDMAINVOID{UCHARIDDRB0XFFPORTB0XFFPORTB0X00DELAYMS10WHILE1{FORI1IDEFINEUCHARUNSIGNEDCHARDEFINEUINTUNSIGNEDINTUCHARTABLE10{0XFC,0X60,0XDA,0XF2,0X66,0XB6,0XBE,0XE0,0XFE,0XF6}UINTCNT1234//计数初值0UCHARKEY_UPUCHARKEY_DOWNVOIDDELAYMSUINTI//延时{UINTJFORI0I{FORJ8000J0J}}VOIDDELAYUSUINTI//延时{UINTJFORI0I{FORJ100J0J}}VOIDLED//显示函数{UCHARM2//消隐延时PORTC0XFE//输出低电平,选通千位数PORTATABLECNT/1000//取出千位数,查表,输出。DELAYUSM//延时PORTA0X00//数码销隐PORTC0XFF//销隐PORTC0XFD//输出低电平,选通百位数PORTATABLECNT1000/100//取出百位数,查表,输出。DELAYUSM//延时PORTA0X00//数码销隐PORTC0XFF//销隐PORTC0XFB//输出低电平,选通十位数PORTATABLECNT100/10//取出十位数,查表,输出。DELAYUSM//延时PORTA0X00//数码销隐PORTC0XFF//销隐PORTC0XF7PORTATABLECNT10//取出个位数,查表,输出。DELAYUSMPORTA0X00//数码销隐PORTC0XFF}VOIDINIT_IOVOID//初始化I/O{//设置A口为输出DDRA0XFFPORTA0XFF//设置B口为输入DDRB0X00PORTB0X00//设置C口为输出DDRC0XFFPORTC0XFF}VOIDJIANYANVOID//检查数码管{UCHARM20//设置延时时间PORTA0XFC//0PORTC0X00DELAYMSMPORTA0X60//1PORTC0X00DELAYMSMPORTA0XDA//2PORTC0X00DELAYMSMPORTA0XF2//3PORTC0X00DELAYMSMPORTA0X66//4PORTC0X00DELAYMSMPORTA0XB6//5PORTC0X00DELAYMSMPORTA0XBE//6PORTC0X00DELAYMSMPORTA0XE0//7PORTC0X00DELAYMSMPORTA0XFE//8PORTC0X00DELAYMSMPORTA0XF6//9PORTC0X00DELAYMSMPORTA0XFC//0PORTC0X00DELAYMSM}VOIDGET_KEYVOID//按键扫描函数{WHILEPINBLED}WHILEPINBLED}}VOIDMAINVOID{IN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值