📄 16位处理portab.c
字号:
/***************************************************************************
功能:一个按键(PTIJ_PTIJ6)按两下 启动标准LED(16位PORTAB)调试
作者:唐小进
时间:08.2.5
现象:第一次按下,四个指示灯亮,第二次按下,运行标准LED
注意: 1.设置按键要有 DDRJ_DDRJ6=0;设为输入
PERJ_PERJ6=1;上拉使能
PPSJ_PPSJ6=0;电阻上拉
2.按第一下和第二下之间一般延时1秒
3.16位处理要象这样 DDRAB=0xFFFF,减小驱动只能8位8位来。
***************************************************************************/
#include <hidef.h> /* common defines and macros */
#include <mc9s12dg128.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
void delay(int m){
int i,j;
for(i=0;i<500;i++)
for(j=0;j<m;j++){
}
}
int Tab3[8]={0x8181,0xC3C3,0xE7E7,0xffFF,0xE7E7,0xC3C3,0x8181,0x0000};
int Tab4[8]={0x1818,0x3c3C,0x7e7E,0xffFF,0x7e7E,0x3c3C,0x1818,0x0000};
void main(void)
{ int i,j,a,b,c;
DDRAB=0xFFFF;
PORTAB=0X0000;
/*RDRIV_RDPA=0XFF; *//*减小驱动,满驱动为4.5V,减小后为3.5V*/
/* RDRIV_RDPB=0XFF; */
DDRJ_DDRJ6=0; /*设为输出*/
PERJ_PERJ6=1; /*上拉使能*/
PPSJ_PPSJ6=0; /*上拉*/
asm nop ;/*空指令*/
asm nop ;
asm nop ;
asm nop ;
asm nop ;
asm nop ;
asm nop ;
asm nop ;
asm nop ;
asm nop ;
asm nop ;
asm nop ;
while(1){
if(PTIJ_PTIJ6==0){
PORTAB=0X6666;
DDRJ_DDRJ6=0; /*设为输出*/
PERJ_PERJ6=1; /*上拉使能*/
PPSJ_PPSJ6=0; /*上拉*/
delay(1600);
while(1){
if(PTIJ_PTIJ6==0){
PORTAB=0X0000;
while(1){
for(i=0;i<=2;i++) /*middle run two sides*/
for(j=0;j<=7;j++){
PORTAB=Tab4[j];
delay(600);
}
for(a=0;a<=2;a++){
PORTAB=0XFFFF;
delay(600);
PORTAB=0X0000;
delay(600);
}
for(b=0;b<=3;b++)
for(c=0;c<=7;c++){ /*two sides run middle*/
PORTAB=Tab3[c];
delay(600);
}
}
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -